Gelöst Erweiterte Eigenschaft mit if Abfrage

Hubertus2313

Gut bekanntes Mitglied
16. Januar 2021
87
35
Moin,
ich habe folgendes Problem und bin gerade am verzweifeln. Wir benötigen für ein Artikelattribut die folgende Wertezuweisung:

In den Monaten Januar bis April soll zugewiesene Wert <Jahr>-SS lauten, in den Monaten Mai bis Dezember <Jahr>-AW. SS steht für Spring/Summer, AW für Autumn/Winter.
Beispielsweise bei ausführen des Workflows am heutigen Tag soll der Wert 2023-AW zurückgegeben werden.

Folgende Erweiterte Eigenschaft habe ich angelegt:
Code:
{% if  {{Datum.Jetzt | Datum: 'MMMM'}} contains 'Januar' or {{Datum.Jetzt | Datum: 'MMMM'}} contains 'Februar' or {{Datum.Jetzt | Datum: 'MMMM'}} contains 'März' or {{Datum.Jetzt | Datum: 'MMMM'}} contains 'April' %}
{{ Datum.Jetzt | Datum: "yyyy"}}-SS
{% elsif {{Datum.Jetzt | Datum: 'MMMM'}} contains 'Mai' or {{Datum.Jetzt | Datum: 'MMMM'}} contains 'Juni' or {{Datum.Jetzt | Datum: 'MMMM'}} contains 'Juli' or {{Datum.Jetzt | Datum: 'MMMM'}} contains 'August' or {{Datum.Jetzt | Datum: 'MMMM'}} contains 'September' or {{Datum.Jetzt | Datum: 'MMMM'}} contains 'Oktober' or {{Datum.Jetzt | Datum: 'MMMM'}} contains 'November' or {{Datum.Jetzt | Datum: 'MMMM'}} contains 'Dezember'  %}
{{ Datum.Jetzt | Datum: "yyyy"}}-AW
{% endif  %}

Die Ausgabe ist wie folgt:
2023-05-24 10_51_05-Erweiterte-Eigenschaften bearbeiten.png
Ich verstehe nicht, warum der erste Teil true sein soll. Er müsste ja das elsif ausgeben (AW-2023). Habe alle möglichen Sachen probiert (die ganzen OR Verknüpfungen raus, mit einzelnen Monaten usw.). Stehe echt auf dem Schlauch. Hat jemand eine Idee?

Zudem sind Leerzeilen davor und danach. Siehe rote Vierecke in Screenshot. Ich habe mir den Code angeschaut, ich finde keine Zeilenumbrüche, Er dürfte ja eigentlich nur den ersten Teil (if) zurückgeben. Vielleiht hat jemand da eine Idee woran das liegen könnte?

Danke schon mal für Eure Hilfe und beste Grüße, Hubertus
 
Zuletzt bearbeitet:

kelvin.

Sehr aktives Mitglied
15. Februar 2023
168
65
Frankfurt
Eine Eigenheit von DotLiquid ist, dass wenn eine Abfrage zu Problemen führt, dass es immer true zurück gibt.

Das Problem liegt darin, dass du
Code:
{{Datum.Jetzt | Datum: 'MMMM'}}
mit den geschweiften Klammer in der If Abfrage drin hast.
Und das im Datum ein Filter ist, führt auch zu Problemen. Beim Letzterem bin ich mir aber gerade nicht sicher.

Besser ist es, du erstellt erstmal Variable mit dem Datum und Filter und nutzt die Case oder If Funktion für die Abfrage.
Hier die Dokumentation: https://guide.jtl-software.de/jtl-wawi/vorlagen/allgemeine-beispiele-fuer-dotliquid/
 
  • Gefällt mir
Reaktionen: Hubertus2313

Hubertus2313

Gut bekanntes Mitglied
16. Januar 2021
87
35
Eine Eigenheit von DotLiquid ist, dass wenn eine Abfrage zu Problemen führt, dass es immer true zurück gibt.

Das Problem liegt darin, dass du
Code:
{{Datum.Jetzt | Datum: 'MMMM'}}
mit den geschweiften Klammer in der If Abfrage drin hast.
Und das im Datum ein Filter ist, führt auch zu Problemen. Beim Letzterem bin ich mir aber gerade nicht sicher.

Besser ist es, du erstellt erstmal Variable mit dem Datum und Filter und nutzt die Case oder If Funktion für die Abfrage.
Hier die Dokumentation: https://guide.jtl-software.de/jtl-wawi/vorlagen/allgemeine-beispiele-fuer-dotliquid/
Danke kelvin. Wieder etwas gelernt. Das war mir nicht bekannt, bin mit Dot Liquid nicht so vertraut. Danke auch für den Hinweis auf die Seite.
Anbei noch die Lösung falls über die Suche jemand hier hingelangt:
Code:
 {% assign month = {{Datum.Jetzt | Datum: 'MMMM'}} %}{% if month contains 'Januar' or month contains 'Februar' or month contains 'März' or month contains 'April' %}{{ Datum.Jetzt | Datum: "yyyy"}}-SS{% elsif month contains 'Mai' or month contains 'Juni' or month contains 'Juli' or month contains 'August' or month contains 'September' or month contains 'Oktober' or month contains 'November' or month contains 'Dezember' %}{{ Datum.Jetzt | Datum: "yyyy"}}-AW{% endif %}

Die Zeilenumbrüche im Code zwischen den Zeilen spielen doch eine Rolle für die Ausgabe.

Beste Grüße und danke noch mal, Hubertus
 
Zuletzt bearbeitet:

mh1

Sehr aktives Mitglied
4. Oktober 2020
1.873
562
Code:
 {% assign month = {{Datum.Jetzt | Datum: 'MMMM'}} %}{% if month contains 'Januar' or month contains 'Februar' or month contains 'März' or month contains 'April' %}{{ Datum.Jetzt | Datum: "yyyy"}}-SS{% elsif month contains 'Mai' or month contains 'Juni' or month contains 'Juli' or month contains 'August' or month contains 'September' or month contains 'Oktober' or month contains 'November' or month contains 'Dezember' %}{{ Datum.Jetzt | Datum: "yyyy"}}-AW{% endif %}
Aus Gründen der einfacheren Lesbarkeit würde ich nicht den Monatsnamen als String auslesen und dann nach zwölf verschiedenen Teilstrings suchen lassen, sondern den Monat numerisch auf größer/kleiner prüfen. So in der Art:
Code:
{% assign month=Datum.Jetzt | Datum: 'MM'  | Times: 1 %} \
{{- Datum.Jetzt | Datum: "yyyy" -}}-\
{% if 4 < month %}AW{% else %}SS{% endif  %}
 

Hubertus2313

Gut bekanntes Mitglied
16. Januar 2021
87
35
Aus Gründen der einfacheren Lesbarkeit würde ich nicht den Monatsnamen als String auslesen und dann nach zwölf verschiedenen Teilstrings suchen lassen, sondern den Monat numerisch auf größer/kleiner prüfen. So in der Art:
Code:
{% assign month=Datum.Jetzt | Datum: 'MM'  | Times: 1 %} \
{{- Datum.Jetzt | Datum: "yyyy" -}}-\
{% if 4 < month %}AW{% else %}SS{% endif  %}
Hallo mh1, Mega, vielen Dank Dir. Ist natürlich tausendmal smarter als meine Lösung. 🙂
Beste Grüße, Hubertus
 

Ähnliche Themen