ich schlage mich mit dem Template eines Verkaufskanals (Produktvergleich) für feed dynamix rum. Ich muss abhängig von „Tag XYZ da oder nicht da“ einen Wert ausgeben. Jedes Produkt hat nen Tag für die Versandklasse und je nachdem welches Tag nun da ist muss ich Versandkosten angeben.
{{product.tags.first.name}} ergibt schon eine Fehlermeldung, dass first nicht auf ein „null Object“ ausgeführt werden kann, aber jedes Produkt hat tags!
{%- for productTags in product.tags -%}
{% if productTags.name == 'Brief' -%}
AT:::0.00 EUR
{%- elseif productTags.name == 'Speditionsversand frei Bordsteinkante' or productTags.name == '2 Mann-Handling' -%}
AT:::100.00 EUR
{%- else -%}
AT:::9.95 EUR
{%- endif -%}
{%- endfor -%}
geht entsprechend auch nicht beziehungsweise spuckt nichts aus
Ich bin mir gerade nicht sicher, aber glaube die Tags werden standardmäßig nicht geladen, die product.tagIds aber schon. Am besten anhand der Tag-Ids vergleichen.
dump mal das product und schaue, ob die Tags überhaupt so gefüllt sind. Ich vermute, dass maximal die IDs verfügbar sein werden, was vermutlich auch etwas sinnvoller zu sein wird, wenn du mal die Bezeichnung ändern möchtest.
Es ist wirklich recht unschön, aber es bleibt nichts anders übrig als über das Array mit den Tag IDs zu iterieren…
{% for tag in product.tagIds %}
{% if (tag == '8ed3c0c4bf35483ebdae3082e23668a3') or (tag == 'c2e14510db5c4899aae8fa3895078f75') %}
<g:price>90.00 {{ context.currency.isoCode }}</g:price>
{% elseif tag == 'b537bc67ca8d4e669721ab7ec3435db2' %}
[...]
{% endif %}
{% endfor %}
Zu meiner großen Erheiterung gibt es in Twig auch kein vordefiniertes Escape, Break oder Return, um eine Schleife zu verlassen. Das mach den ganzen Spaß noch toller.