gege Posted March 31, 2005 Report Share Posted March 31, 2005 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 More sharing options...
gege Posted March 31, 2005 Author Report Share Posted March 31, 2005 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 More sharing options...
gege Posted March 31, 2005 Author Report Share Posted March 31, 2005 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 More sharing options...
polkhigh33 Posted March 31, 2005 Report Share Posted March 31, 2005 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 More sharing options...
gege Posted March 31, 2005 Author Report Share Posted March 31, 2005 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 More sharing options...
gege Posted March 31, 2005 Author Report Share Posted March 31, 2005 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 More sharing options...
gege Posted March 31, 2005 Author Report Share Posted March 31, 2005 HAAALT!!!! Das NICHT-Anzeigen als Gast funktioniert, aber als Kunde ist der Text leider auch nicht zu sehen! Was ist denn da blo? noch falsch? Link to comment Share on other sites More sharing options...
gege Posted March 31, 2005 Author Report Share Posted March 31, 2005 Halllooooo, HIIIILLLFFFEEE, hab jetzt alle m?glichen Varianten mit == != info_smarty, smarty etc. ausprobiert, aber es bleibt beim Stand, dass der Text Preis NICHT angezeigt wird. :cry: Link to comment Share on other sites More sharing options...
smedder Posted March 31, 2005 Report Share Posted March 31, 2005 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 More sharing options...
sff Posted March 31, 2005 Report Share Posted March 31, 2005 //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 More sharing options...
gege Posted April 1, 2005 Author Report Share Posted April 1, 2005 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 More sharing options...
smedder Posted April 1, 2005 Report Share Posted April 1, 2005 Argh. Dann musst du es irgendwie hinbekommen, dass von der Smartyvariablen der Inhalt per PHP abgefragt werden kann. Ich bin im Moment zeitlich etwas knapp angebunden, sonst w?rde ich selber schauen, aber guck doch mal bei http://smarty.php.net ob du da was findest, wie man es l?sen kann. Link to comment Share on other sites More sharing options...
polkhigh33 Posted April 1, 2005 Report Share Posted April 1, 2005 Leider wird der Text angezeigt als {#price#} ist {#price#} denn in der lang.conf auch im passenden abschnitt definiert ? Link to comment Share on other sites More sharing options...
gege Posted April 1, 2005 Author Report Share Posted April 1, 2005 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 More sharing options...
polkhigh33 Posted April 1, 2005 Report Share Posted April 1, 2005 Klar, die Variable ist definiert. auch in der richtigen section ? ( section="product_info") Link to comment Share on other sites More sharing options...
smedder Posted April 1, 2005 Report Share Posted April 1, 2005 Auf der Seite gibts auch ne deutsche Dokumentation: http://smarty.php.net/manual/de/ Link to comment Share on other sites More sharing options...
gege Posted April 1, 2005 Author Report Share Posted April 1, 2005 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 More sharing options...
smedder Posted April 1, 2005 Report Share Posted April 1, 2005 ?hm, ich frag mich zwar, wie das funktioniert, dass au?erhalb eines PHP-Bereiches erst die Ausf?hrung der If-Schleife ausgef?hrt wird. Jo, der Geburtsjahrangabe kannst du vertrauen schenken. Link to comment Share on other sites More sharing options...
gswkaiser Posted April 20, 2005 Report Share Posted April 20, 2005 <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 More sharing options...
khan_thep Posted April 20, 2005 Report Share Posted April 20, 2005 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 More sharing options...
gege Posted April 20, 2005 Author Report Share Posted April 20, 2005 @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 More sharing options...
gswkaiser Posted April 21, 2005 Report Share Posted April 21, 2005 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 More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.