TWIG-Abfragen in Mailtemplate

Hallo zusammen,

ich würde gerne in der Bestellbestätigung eine TWIG-Abfrage einbauen, die den Firmennamen und die additionalAddressLine1 nur ausgibt, wenn eine Firma oder Zusatzangabe eingetragen wurde und sonst diese Information einfach überspringt.

Unter Shopware 6.1.4 habe ich das so gelöst:
{% if delivery.shippingOrderAddress.additionalAddressLine1 %}
{{ delivery.shippingOrderAddress.additionalAddressLine1 }}

{% endif %}

Diese Abfrage auch mit geändertem Parameter führt jetzt dazu, dass keine Mail mehr versendet wird:
{% if billingAddress.additionalAddressLine1 %}
{{ billingAddress.additionalAddressLine1 }}

{% endif %}

Ich gehe also davon aus, dass die TWIG-Abfrage nicht korrekt ist. Ohne die if-Abfrage wird die Information korrekt ausgegeben, wenn eine Firma eingetragen ist. Der Parameter ist somit wohl korrekt. Ist keine Firma eingetragen, ist in der Mail nur eine leere Zeile, was ich unschön finde.

Weiß jemand, wie ich die TWIG-Abfrage modifizieren muss, damit die Firma etc. nur ausgegeben wird, wenn sie auch eingetragen ist?

Hallo @KompendiumHistologie,

du musst die Variablen nicht mit einer IF-Abfrage im E-Mail Template kontrollieren, wenn die kein Wert haben, wird nichts ausgegeben. Wichtig ist das du die Variable setzt, wie dies auch im Standard-Template der Fall ist:

{% set billingAddress = order.addresses.get(order.billingAddressId) %}

Viele Grüße aus Schöppingen
Florian

Hallo Florian,

vielen Dank für die Rückmeldung. Ich habe den Block nur um wenige Zeilen erweitert, damit alle eingegebenen Informationen in der Anmeldung aus ausgegeben werden:
{% set billingAddress = order.addresses.get(order.billingAddressId) %}
Rechnungsadresse:
{{ billingAddress.company }}
{{ billingAddress.department }}
{{ billingAddress.firstName }} {{ billingAddress.lastName }}
{{ billingAddress.additionalAddressLine1 }}
{{ billingAddress.street }}
{{ billingAddress.zipcode }} {{ billingAddress.city }}
{{ billingAddress.country.translated.name }}

Das funktioniert auch gut, wenn alles angegeben wird z.B.
Musterfirma
Musterabteilung
Max Mustermann
Etage 3
Musterstraße 123
12345 Musterstadt
Musterland

Wenn aber Dinge nicht eingegeben werden, dann entsteht ein Lückentext:
Leerzeile
Leerzeile
Max Mustermann
Leerzeile
Musterstraße 123
12345 Musterstadt
Musterland

Die leeren Informationen ergeben dann leeren Zeilen. Ich würde gerne die dann einfach in der Ausgabe überspringen, damit dann das entsteht:
Max Mustermann
Musterstraße 123
12345 Musterstadt
Musterland

Daher hatte dann jede nicht verpflichtende Zeile eine Abfrage, ob da was steht. Das geht jetzt aber nicht mehr, weil meine Abfrage offenbar falsch ist:
{% if billingAddress.additionalAddressLine1 %} {{ billingAddress.additionalAddressLine1 }} {% endif %}

Oder geht das so nicht mehr?

Versuch mal dein Glück damit Twig for Template Designers - Documentation - Twig - The flexible, fast, and secure PHP template engine :slight_smile: (hab ich jetzt nicht ausgetestet, sollte aber funktionieren)