Moin liebe Forum-User. Ich habe eine Frage: In der Bestellbestätigung gibt es diesen Code: Code: [FONT=Verdana, Arial, Helvetica, sans-serif][SIZE=1]{if $PAYMENT_MODUL=='moneyorder'} Unsere Bankverbindung: {php} echo nl2br(MODULE_PAYMENT_MONEYORDER_PAYTO); {/php} {else} [/SIZE][/FONT][FONT=Verdana, Arial, Helvetica, sans-serif][SIZE=1]{$PAYMENT_INFO_HTML}[/SIZE][/FONT][FONT=Verdana, Arial, Helvetica, sans-serif][SIZE=1] {/if}[/SIZE][/FONT] {if $COMMENTS} [B][FONT=Verdana, Arial, Helvetica, sans-serif][SIZE=1]Ihre Anmerkungen:[/SIZE][/FONT][/B] [FONT=Verdana, Arial, Helvetica, sans-serif][SIZE=1]{$COMMENTS}[/SIZE][/FONT] {/if} Der sorgt dafür, dass im Falle einer Zahlung per Vorkasse die Kontoinformationen automatisch in der Bestellbestätigung mit aufgeführt werden. Das gleiche bräuchte ich auch für die Zahlweise Rechnung. Kann mir evtl. jemand helfen, wie der Code dafür aussehen muss? Danke euch vielmals... Grüße, Petra
Hallo Petra, erweitere die IF .. Code: [FONT=Verdana, Arial, Helvetica, sans-serif][SIZE=1]{if $PAYMENT_MODUL=='moneyorder' or [/SIZE][/FONT][FONT=Verdana, Arial, Helvetica, sans-serif][SIZE=1][FONT=Verdana, Arial, Helvetica, sans-serif][SIZE=1]$PAYMENT_MODUL=='invoice'[/SIZE][/FONT]}[/SIZE][/FONT]
Hallo Manfred, danke dir für deine schnelle Antwort.Ich habe jetzt das geändert: Code: [FONT=Verdana, Arial, Helvetica, sans-serif][SIZE=1]{if $PAYMENT_MODUL=='moneyorder'[/SIZE][/FONT] [FONT=Verdana, Arial, Helvetica, sans-serif][SIZE=1]or [/SIZE][/FONT][FONT=Verdana, Arial, Helvetica, sans-serif][SIZE=1][FONT=Verdana, Arial, Helvetica, sans-serif][SIZE=1]$PAYMENT_MODUL=='invoice'[/SIZE][/FONT]}[/SIZE][/FONT][FONT=Verdana, Arial, Helvetica, sans-serif][SIZE=1] Unsere Bankverbindung: {php} echo nl2br(MODULE_PAYMENT_MONEYORDER_PAYTO); {/php} {else} [/SIZE][/FONT][FONT=Verdana, Arial, Helvetica, sans-serif][SIZE=1]{$PAYMENT_INFO_HTML}[/SIZE][/FONT][FONT=Verdana, Arial, Helvetica, sans-serif][SIZE=1] {/if}[/SIZE][/FONT] {if $COMMENTS} [B][FONT=Verdana, Arial, Helvetica, sans-serif][SIZE=1]Ihre Anmerkungen:[/SIZE][/FONT][/B] [FONT=Verdana, Arial, Helvetica, sans-serif][SIZE=1]{$COMMENTS}[/SIZE][/FONT] {/if} und bekomme diesen Fehle wenn ich die Vorschau aufrufe....: Was mach ich falsch :-( FATAL ERROR(256): "Smarty error: [in /homepages/17/d461017612/htdocs/naturalkefirdrinks/cache/gm_temp_email.html line 46]: syntax error: unidentified token '=' (Smarty_Compiler.class.php, line 1410)" in /homepages/17/d461017612/htdocs/naturalkefirdrinks/includes/classes/Smarty/Smarty.class.php:1103 (Details)
Hallo, Smarty kennt keinen „or“-Operator. So sollte es gehen: Code: {if $PAYMENT_MODUL=='moneyorder' || $PAYMENT_MODUL=='invoice'}
Perfekt!!! Funktioniert.... Danke schön Super, dass man so schnelle Antworten bekommt - danke euch beiden vielmals... @Manfred - kenn ich diese morgentliche Amnesie ;-) kein Problem Grüße, Petra
Mit dem Satz letzte Nacht schweißgebadet aus Alptraum aufgewacht: "Oh Gott - unser Shop kann ja gar nicht funktionieren"! <Scherz Off> Wieso geht Smarty´s "or" in unserer 2.0.9 an gefühlten 4567 Stellen? <Grübel On>
Ich stelle fest, ich habe mich geirrt. Sorry. Tatsächlich unterstützt Smarty alle Operatoren, die PHP selbst auch hat. Dennoch würde ich an solchen Stellen die Finger von „or“ lassen, denn „or“ ist kein Synonym für „||“. Die unterscheiden sich subtil, vgl. http://de2.php.net/manual/en/language.operators.logical.php und http://de2.php.net/manual/en/language.operators.precedence.php Beispiel: PHP: function do_something(){ // ... if($error_occurred) { return false; } else { return true; }}function log_message($p_message){ file_put_contents('logfile.txt', $p_message, FILE_APPEND); return true;}$result_1 = do_something() || log_message('error');$result_2 = do_something() or log_message('error'); Hier wird $result_1 immer den Wert true bekommen durch die stärkere Bindung des ||-Operators. Da steht im Prinzip PHP: $result_1 = (true || true);bzw.$result_1 = (false || true); denn log_message() liefert immer true, womit der Rückgabewert von do_something() egal ist. $result_2 hingegen wird immer nur den Rückgabewert von do_something() erhalten, weil alles links vom „or“-Operator wegen dessen geringer Priorität zuerst ausgewertet wird. Damit wird also auch log_message() in diesem Fall nur dann aufgerufen, wenn der Teil links von „or“ false ist.
Och datt kann man in der Becks-Währung ganz bequem wieder i.O. bringen! Deine Ausführungen sind schon sehr interessant - echt! Danke.
Hallo zusammen, wofür ist die Variabel im ELSE der Abfrage? Was zeigt die? Und woher kommt das? $PAYMENT_INFO_HTML LG Sebastian