Jump to content
xt:Commerce Community Forum

Artikelbeschreibung Customer_status Auslesen


gege

Recommended Posts

Hallo, Ihr Lieben,

ich habe meine product_info.html umgestaltet, u.a.

steht jetzt vor dem Preis Preis:

wenn man im shop eingestellt hat, dass G?ste keine Preise sehen, so hat man das Problem, dass da immer noch Preis steht, obwohl keiner da ist.

Auch habe ich den Thread verfolgt, der sich mit der neuen Preisangabenverordnung befasst und wonach beim Preis auch Hinweise zu incl. oder excl. MwSt etc. stehen m?ssen.

Bei beiden Themeatiken m?sste man also den Customer_status auslesen, um die Anzeige des Textes Preis:

aber auch z.B. des Textes incl. 16% MwSt zu unterdr?cken.

Nur leider weiss ich nicht, wie man woher den customer_status mit Hilfe welchen Codes im template ausliest.

Bei meiner Zeile Produkt-Optionen hab ich das ja mit einiger M?he hinbekommen, dass die Zeile nur erscheint, wenn es auch Optionen gibt...

{if $products_options_data!=''}

<tr>

<td class="bezeichnung" colspan="2" align="left">{#options#}</td>

<td align="right">{$MODULE_product_options}</td>

<td></td>

<td colspan="3" align="right">{$MODULE_product_options}</td>

<td></td>

</tr>

{/if}

....aber der customer_status ?bersteigt meine M?glichkeiten.

K?nnte mir da bitte jemand nen heissen Tipp geben?

Link to comment
Share on other sites

Ich fange mal mit meinen beschr?nkten M?glichkeiten an...

Im template-Ordner beim Boxen-Sorce bin ich auf die infobox.php gestossen.

dort gibt es die Zeile:

if ($_SESSION['customers_status']['customers_status_show_price'] == 0)

Mein Code bisher ist:

<tr>

<td class="bezeichnung">{#price#}</td>

<td class="products_price" align="left">{$PRODUCTS_PRICE}</td>

<td></td>

<td class="products_price">{if $MODULE_graduated_price!=''}{$MODULE_graduated_price}{/if}</td>

<td></td>

<td class="bezeichnung" align="right" valign="middle">{$ADD_QTY}</td>

<td class="bezeichnung" align="left">{#unit#}</td>

<td align="right">{$ADD_CART_BUTTON}</td>

</tr>

Daraus hab ich gemacht:

<tr>

<td class="bezeichnung"><?php if ($_SESSION['customers_status']['customers_status_show_price'] = 0)?>{#price#}</td>

<td class="products_price" align="left">{$PRODUCTS_PRICE}</td>

<td></td>

<td class="products_price">{if $MODULE_graduated_price!=''}{$MODULE_graduated_price}{/if}</td>

<td></td>

<td class="bezeichnung" align="right" valign="middle">{$ADD_QTY}</td>

<td class="bezeichnung" align="left">{#unit#}</td>

<td align="right">{$ADD_CART_BUTTON}</td>

</tr>

Was aber, allerdings OHNE "Meckern", NICHT funktioniert

:tweak: Bitte Nicht hauen! :tweak:

Link to comment
Share on other sites

Kann ja nicht gehen....

Wobei das Nachfolgende auch nicht geht....

<td class="bezeichnung">{php}if ($_SESSION['customers_status']['customers_status_show_price'] = 0){{/php}{#price#}</td>

Da gibts die Meldung:

Parse error: parse error in D:\xampp\htdocs\x\templates_c\%%133^%%1336432351^product_info_e1.html.php on line 152

Link to comment
Share on other sites

probier mal so

<tr> 

     <td class="bezeichnung">{if ($_SESSION['customers_status']['customers_status_show_price'] == 0)}{#price#}{/if}</td>

     <td class="products_price" align="left">{$PRODUCTS_PRICE}</td>

     <td></td>

     <td class="products_price">{if $MODULE_graduated_price!=''}{$MODULE_graduated_price}{/if}</td>

     <td></td>

     <td class="bezeichnung" align="right" valign="middle">{$ADD_QTY}</td>

     <td class="bezeichnung" align="left">{#unit#}</td>

     <td align="right">{$ADD_CART_BUTTON}</td>

    </tr>

ohne gewehr, ungetestet.

Link to comment
Share on other sites

Bei ...

<td class="bezeichnung">{if ($_SESSION['customers_status']['customers_status_show_price'] == 0)}{#price#}{/if}</td>

... kommt das:

Fatal error: Smarty error: [in pax-green/module/product_info/product_info_e1.html line 36]: syntax error: unidentified token '['customers_status']['customers_status_show_price']' (Smarty_Compiler.class.php, line 1358) in D:\xampp\htdocs\xtc_well\includes\classes\smarty_2.6.2\Smarty.class.php on line 1102

Link to comment
Share on other sites

So, habs jetzt mit Logik (und Anschauen von ?hnlichem) hinbekommen.....

in der includes/modules/product_info.php

am Ende VOR

}

$smarty->assign('main_content',$product_info);

?>

Eingef?gt:

//GG Versuch f?r customer_status show no price

if ($_SESSION['customers_status']['customers_status_show_price'] == 0)

{

$info_smarty->assign('TEXT_PRICE',sprintf(TEXT_PRICE));

} else {

$info_smarty->assign('TEXT_PRICE',sprintf(TEXT_NO_PRICE));

}

//GG ende

In der lang/sprache/lang_sprache.php

eingef?gt

//GG f?r product_info.php

define ('TEXT_PRICE','Preis');

define ('TEXT_NO_PRICE','');

in der template-Datei von product_info*.html

<tr>

<td class="bezeichnung">{$TEXT_PRICE}</td>

<td class="products_price" align="left">{$PRODUCTS_PRICE}</td>

<td></td>

<td class="products_price">{if $MODULE_graduated_price!=''}{$MODULE_graduated_price}{/if}</td>

<td></td>

<td class="bezeichnung" align="right" valign="middle">{$ADD_QTY}</td>

<td class="bezeichnung" align="left">{#unit#}</td>

<td align="right">{$ADD_CART_BUTTON}</td>

</tr>

Ich h?tte zwar lieber die Textvariablen in der Sprache.conf gehabt und nicht in der Sprache.php, aber so ist es erstmal machbar.

W?re nett, wenn jemand, der weiss, wie man das mit den sprache.conf Variablen umsetzen k?nnte, hier noch den Tipp anbringen k?nnte.

Link to comment
Share on other sites

Originally posted by gege@Mar 31 2005, 16:04 PM

Kann ja nicht gehen....

Wobei das Nachfolgende auch nicht geht....

Da gibts die Meldung:

Habs mir jetzt mal angeschaut und dr?ber anchgedacht, ich w?rde es so probieren, wie du es hier geschrieben hast, nur ist bei dir noch ne kleine Klammer zu viel im Code und ich w?rde es anders aufbauen.

Probiers mal so:


<td class="bezeichnung">{php}if ($_SESSION['customers_status']['customers_status_show_price'] = 0){ print ("{#price#}");}{/php}</td>


Link to comment
Share on other sites

//GG Versuch f?r customer_status show no price

if ($_SESSION['customers_status']['customers_status_show_price'] == 0)

{

$info_smarty->assign('TEXT_PRICE',sprintf(TEXT_PRICE));

} else {

$info_smarty->assign('TEXT_PRICE',sprintf(TEXT_NO_PRICE));

}

//GG ende

Hast du hier nicht TEXT_PRICE und TEXT_NO_PRICE vertauscht?

Link to comment
Share on other sites

Hall?le,

Das mit dem Verdrehen scheint zu stimmen, was aber insofern egal ist, da der Text weder bei Kunden, noch bei G?sten angezeigt wird und mein Code anscheinend falsch ist.

@smedder

Das ist schon mal ziemlich Klasse, wobei der Operator mitsamt Wert falsch war, den ich dann ge?ndert habe.

Leider wird der Text angezeigt als

{#price#}

<td class="bezeichnung">{php}if ($_SESSION['customers_status']['customers_status_show_price'] == 1){ print ("{#price#}");}{/php}</td>

Link to comment
Share on other sites

Klar, die Variable ist definiert.

Es sieht mir nur so aus, als wenn wegen (rot)

<td class="bezeichnung">{php}if ($_SESSION['customers_status']['customers_status_show_price'] == 1){ print ("{#price#}");}{/php}</td>

..der doppel-g?nse, denn die f?hren ja normalerweise auch immer dazu, dass das Eingeschlossene Inhalt angezeigt wird, also das komplette "{#price#}")

Ich hab es schon probiert 1x ohne die g?nse, 1x ohne die klammern drumrum und 1x ohne Beidem, aber da gibts Fehlermeldungen.

Ich denke, dass wir 1mm vor der Vollendung des Grundprinzips sind. :wall:

@smedder

Die HP von smarty kenne ich, bin aber schon "hundert Jahre" von meinem Schulenglisch entfernt. Ich bin nicht lernunwillig, ganz im Gegenteil. Ich kann zwar de meisten W?rter irgendwie ?bersetzen, aber Inhalte kann ich daraus nicht lernen.

Link to comment
Share on other sites

So, jetzt glaube ich ein weiteres Mal, es hinbekommen zu haben:

<td class="bezeichnung">{php}if ($_SESSION['customers_status']['customers_status_show_price'] == 1){/php}{#price#}</td>

Bei Gast wirds nicht gezeigt, bei Kunde ja, Juchuuuuh :bounce:

Danke an alle, besonders an @smedder, der den richtigen Grundansatz geliefert hat (und, wenn man der Geburtsjahrangabe Glauben schenkt, ganz erstaunlich viel weiss).

Link to comment
Share on other sites

  • 3 weeks later...

<td class="bezeichnung">{php}if ($_SESSION['customers_status']['customers_status_show_price'] == 1){/php}{#price#}</td>

Dieser Code ist ziemlich sinnlos, und bewirkt sicher nicht das gew?nschte Ergebnis.

Mit

{php}if ($_SESSION['customers_status']['customers_status_show_price'] == 1){/php}

verl?sst man die "smarty"-Verarbeitung, und fragt auf PHP-Ebene, ob der Kunde eine Preisanzeige erhalten soll. Allerdings ohne mit diesem Wissen irgendetwas anzufangen! Nach "{/php}" ist n?mlich Schluss mit PHP, und "smarty" ?bernimmt wieder. D.h., "{#price#}" wird immer angezeigt!

Probleme dieser Art kann man auf "smarty"-Ebene m.E. nicht l?sen, da der in "{php}...{/php}" eingeschlossene PHP-Code 1:1 ?bernommen wird, und darin auch kein Zugriff auf "smarty"-Variable wie z.B. "{#price#}" m?glich ist.

Das kann man aber leicht im zugeh?rigen PHP-Programm durch Definition geeigneter "smarty"-Variablen erreichen.

Beispiel

Im PHP-Programm erscheint folgender Code:

if ($_SESSION['customers_status']['customers_status_show_price'] == 1)

{

smarty->assign(SHOWPRICE,true);

}

Im Template kann man dann wie folgt darauf Bezug nehmen:

<td class="bezeichnung">{if $SHOWPRICE}{#price#}{/if}</td>

Link to comment
Share on other sites

Probleme dieser Art kann man auf "smarty"-Ebene m.E. nicht l?sen, da der in "{php}...{/php}" eingeschlossene PHP-Code 1:1 ?bernommen wird, und darin auch kein Zugriff auf "smarty"-Variable wie z.B. "{#price#}" m?glich ist.

doch , geht ALLES in Smarty und noch einiges mehr...

Link to comment
Share on other sites

@gswkaiser

Hallo,

leider komme ich heute nicht dazu, es auszuprobieren, m?chte mich aber schonmal bedanken.

:dafuer:

Diese Art der Beschreibung, vor allem mit dem "Warum ist das so", ist echt Klasse f?r Menschen, die nicht Programmier sind, sich aber doch in der Materie immer besser auskennen m?chten.

Das erinnert mich an das Sprichwort:

"Wenn Du jemandem zu essen geben willst, gib ihm nicht den Fisch, sondern lehre ihn das Fischen.!"

Herzlichst

Gabi

Link to comment
Share on other sites

Originally posted by khan_thep@Apr 20 2005, 11:17 AM

doch , geht ALLES in Smarty und noch einiges mehr...

Wo kann ich das denn nachlesen????

Das "smarty"-Manual sagt dazu folgendes:


php


'php'-Tags erlauben es, PHP-Code direkt in das Template einzubetten. Der Inhalt wird nicht 'escaped', egal wie $php_handling konfiguriert ist. Dieses Tag ist nur f?r erfahrene Benutzer gedacht und wird auch von diesen normalerweise nicht ben?tigt. 


nicht 'escaped' bedeutet ja wohl, dass "smarty" diesen Code nicht interpretiert, was ja zur Folge hat, dass keine "smarty"-Variablen ersetzt werden.

D.h. doch wohl dann , dass

{php echo {$smarty_variable}{/php} den Text "{$smarty_variable}" ausgibt, und nicht den ?ber "smarty" zugewiesenen Inhalt der Variablen "smarty_variable".

Oder?!

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
  • Create New...