Checkout Finish: Variable abhängig v. Warenkorbinhalt setzen

Hallo zusammen, auf der Bestellbestätigungsseite (Checkout Finish) möchten wir abhängig vom Warenkobinhalt eine Variable setzen. Leider bin ich mit dem Smarty-System noch nicht so vertraut. Kann eventuell jemand helfen wie das geht? Aufgabe: Prüfe ob die Bestellung einen Artikel mit der Artikelnummer a enthält. Wenn ja, dann weise der Variable x den Wert w zu. Was ist falsch? - So hatte ich mir das gedacht: {foreach from=$sOrderDetails item=aktuelle_posit} {if $aktuelle_posit.ordernumber == a } {assign var=“x” value=w} {/if} {/foreach} Vielen Dank im Voraus, :slight_smile:

Schreibe mal {debug} an den Anfang der Template-Datei, dann erstellt Smarty in einem separaten Fenster eine Liste aller dem Template verfügbaren Variable, Objekte usw. (Sofern die Shopware AG das {debug} nicht deaktiviert hat… :sunglasses: ) “ordernumber” scheint mir nicht unbedingt die Artikelnummer zu sein, sondern eher die lfd. Position… Mag mich aber täuschen.

Ist das der konkrete Code? Also wenn musst du == ‘A’ schreiben und nicht einfach nur A - ansonsten sieht das auf den ersten Blick nicht total verkehrt aus :wink:

Danke schonmal! :slight_smile: Öhm… ob das der korrekte Code ist? Wie gesagt der Smarty-Syntax ist mir vollkommen neu. Zuletzt hat jetzt gar nichts mehr funktioniert… - eine vollkommen weiße Seite statt Bestellbestätigungsseite… :sunglasses: Jetzt mal der komplette Schnipsel, Ziel ist ein Affiliate-Tracking. Wenn der Warenkorb den Artikel mit der Bestellnummer 01010204 enthält, soll die Variable $ttProductID den Wert 5509 annehmen. Im nachfolgenden Zählpixel wird die Variable dann an das Conversionsscript übermittelt. {assign var="ttAmount" value=$sAmount|replace:",":"."} {assign var="ttShipping" value=$sShippingCosts|replace:",":"."} {assign var="ttValue" value=round(($ttAmount-$ttShipping)/1.19,2)} {assign var="ttProductID" value=4992} {foreach from=($sOrderDetails-\>value) item=aktuelle\_posit} {if $aktuelle\_posit.ordernumber == "01010204" } {assign var="ttProductID" value=5509} {/if} {/foreach} ![](https://www.shopdomain.de/conversion.php?campaignID=1234&productID={$ttProductID}&conversionType=sales&https=1&transactionID={$sOrderNumber}&transactionAmount={$ttValue}&email={$sUserData.additional.user.email}&descrMerchant=&descrAffiliate=)

Welche Shopware Version setzt du ein? 3.5.0? Das {foreach from=($sOrderDetails-\>value) item=aktuelle\_posit} müsste doch so aussehen? {foreach from=$sBasket.content item=sBasketItem} {if $sBasketItem.ordernumber == "01010204" } {assign var="ttProductID" value=5509} {/if} {/foreach}

1 Like

P.s. weiße Seite ist merkwürdig - kommt da kein Smarty-Fehler? Kannst du mal in deiner Application.php throwExceptions & showExceptions auf true setzen?

1 Like

Wir haben hier momentan Version 3.5.2, nein ein Smarty-Fehler wurde nicht gemeldet. Die erzeugte weiße Seite hatte keine einzige Zeile Quelltext. Offenbar hat sich da die Smarty-Engine an irgendwas ganz böse verschluckt :frowning: Mit dem Korrekturvorschlag getestet, das Ergebnis war unverändert („weiß“): {foreach from=$sBasket.content item=sBasketItem} {if $sBasketItem.ordernumber == "01010204" } {assign var="ttProductID" value=5509} {/if} {/foreach} Am Ende haben wir es jetzt mit folgender Variante zum Laufen gebracht: {foreach item=i from=$sOrderDetails} {if $i.ordernumber == "01010204"} {assign var="ttProductID" value=5509} {/if} {/foreach} Jetzt kommt alles wie gewünscht im Affiliatenetzwerk an (abweichende ProductID, Nettoumsatz nach Abzug von Versandkosten und Gutschein, etc.). Vielen Dank! :slight_smile: