Liquid-Variablen in Shopify Flow
Variablen sind Platzhalter, die bei der Ausführung eines Workflows durch Werte ersetzt werden. Diese Variablen beschreiben die Attribute der Kunden, Bestellungen und Produkte, die an deinen Workflows beteiligt sind. Es gibt beispielsweise Variablen für die Bestellnummer, den Bestellpreis, den Kundennamen und so weiter. Variablen können in Bedingungen verwendet werden, um die Logik in deinem Workflow zu steuern oder um Daten in einer Aktion auszugeben.
Auf dieser Seite
Über Liquid
Liquid ist eine Vorlagensprache, die zum Zugriff auf Variablen in Aktionen und zum Schreiben von Code in Flow verwendet wird. Flow verwendet eine Variante von Liquid, die sich stark an der Open-Source-Bibliothek orientiert. Shopify-Themes verwenden eine andere Variante von Liquid. Diese Liquid-Variante ist spezifisch auf Themes ausgelegt und enthält mehr Filter und Tags als Flow sowie eine andere Syntax für den Zugriff auf Variablen.
Liquid-Variablen
Du kannst Liquid-Variablen zu jedem Textfeld hinzufügen, das den Link Eine Variable hinzufügen enthält. Klicke unter dem entsprechenden Feld auf den Link Eine Variable hinzufügen und wähle eine Variable aus der Liste aus.
Die in der Liste Eine Variable hinzufügen aufgeführten Variablen sind so gefiltert, dass dir nur die nach Schritten zurückgegebenen Variablen vor dem aktuellen Schritt angezeigt werden, wie zum Beispiel Trigger. Der Trigger Bestellung erstellt stellt beispielsweise Bestell- und Shop-Ressourcen zur Verfügung, die es dir ermöglichen, Variablen für die Bestellung oder deine Shop-Einstellungen zu verwenden, auf die über die GraphQL Admin-API zugegriffen werden kann. Nachdem du eine Variable aus der Liste ausgewählt hast, wird diese korrekt formatiert und dem Textfeld hinzugefügt.
Du kannst den Liquid-Code auch direkt in den Textblock schreiben. Du kannst die Variable {{ order.name }}
beispielsweise verwenden, um die im Shopify-Adminbereich angezeigte Bestellzeichenfolge anzuzeigen, wie z. B. "Bestellung-123".
Da Flow die GraphQL Admin-API verwendet, um Daten abzurufen, die du in Liquid verwendest, verwendet die Variablensyntax die "gemischte Groß-/Kleinschreibung". Um beispielsweise auf das Datum zuzugreifen, an dem ein Produkt erstellt wurde, gib {{ product.createdAt }}
ein. Wenn du die Liquid-Syntax in einem Shopify-Theme verwendest, gibst du {{ product.created_at }}
ein.
Liquid-Tags für Bedingungen und Iterationen
Manchmal möchtest du Liquid-Tags u. U. für folgende Aktionen verwenden:
- An eine Bedingung geknüpfte Anweisungen schreiben, z. B. die Bestimmung, ob eine Bestellsumme größer als 100 USD ist.
- Durch eine Liste von Objekten iterieren, z. B. die Ausgabe von Daten für jede Position in einer Bestellung.
Du kannst Liquid-Tags verwenden, um diese Anweisungen zu schreiben und durch Objekte zu iterieren.
Im folgenden Liquid-Code wird beispielsweise die Bestellnummer angezeigt, wenn die Bestellsumme größer als 100 USD ist:
Du kannst auch eine For-Schleife verwenden, um durch eine Liste von Objekten zu iterieren, z. B. durch die Positionen einer Bestellung. Im folgenden Liquid-Code wird beispielsweise der Name jedes Artikels in einer Bestellung angezeigt:
Flow unterstützt die folgenden bedingten (oder Kontrollfluss-)Tags von Liquid:
- if
- unless
- elsif/else
- case/when
- und/oder (mehrere Bedingungen)
Flow unterstützt auch die folgenden Iterationstags von Liquid:
Filter
Mit Filtern kannst du Daten in Liquid umwandeln. Flow unterstützt alle Open-Source-Liquid-Filter.
Der folgende Liquid-Code entfernt beispielsweise ein Präfix aus einem Bestellnamen und gibt den übrigen Text aus: {{ order.name | remove: "Order-" }}
Zusätzlich zu den Standard-Liquid-Filtern stellt Flow Datumsfilter bereit, um ein Datum im Verhältnis zu einem anderen Datum zur Unterstützung des Triggers Geplanter Zeitpunkt und der Funktionen Daten abrufen abzurufen. Diese Filter sind: date_minus
und date_plus
.
So gibst du ein Datum aus, das einen Tag in der Zukunft liegt:{{ "now" | date_plus: "1 day" }}
So gibst du ein Datum aus, das einen Tag in der Vergangenheit liegt:{{ "now" | date_minus: "1 day" }}
Diese Filter akzeptieren second
, minute
, day
, week
, month
und year
als Einheit für die Dauer sowohl im Singular (z. B. second
) als auch im Plural (z. B. seconds
). Zusätzlich zu diesem Format kannst du auch eine ganze Zahl (Anzahl der Sekunden) bereitstellen. Zum Beispiel:{{ "now" | date_minus: 3600 }}
Du kannst auch einen ISO8601-Dauer-String angeben, wobei P1Y2D
1 Jahr und 2 Tage bedeutet:{{ "now" | date_minus: "P1Y2D" }}
Überlegungen zur Verwendung von Liquid-Variablen in Filtern
- Flow unterstützt keine Punktnotation, die für einige Filter verfügbar ist. Flow unterstützt beispielsweise
{{ order.lineItems | size }}
, aber nicht{{ order.lineItems.size }}
. - Flow unterstützt keine Punktnotation für Metafelder. Du kannst beispielsweise nicht
{{ order.metafields.custom.hold_note }}
verwenden. Stattdessen musst du eine Schleife auf die Metafelder anwenden, wie in den Beispielen beschrieben. - Flow unterstützt die Verwendung von Indizes nicht für den Zugriff auf Elemente in einer Liste. Du kannst beispielsweise nicht
{{ order.lineItems[0].title }}
verwenden. Stattdessen musst du eine Schleife auf die Positionen anwenden, wie in den Beispielen beschrieben.
Beispiele
Betrachte die folgenden Beispiele, um ein besseres Verständnis für die Verwendung von Liquid-Variablen zu erlangen.
URLs für Ressourcen ausgeben
Du möchtest die URLs für den Kunden, die Bestellung und das Produkt ausgeben, die an einem Workflow beteiligt sind.
Liste von Tags in ein Metafeld umwandeln
Du möchtest einen Satz Tags in ein Metafeld umwandeln, das eine Liste von Feldern für einzeiligen Text ist. Du erstellst einen Workflow mit dem Trigger Produkt zum Shop hinzugefügt und verwendest die Aktion Produkt-Metafeld aktualisieren. Im Abschnitt Wert der Aktion Produkt-Metafeld aktualisieren fügst den folgenden Liquid-Code hinzu. In diesem Beispiel wird davon ausgegangen, dass du die Werte nur einmal beim Erstellen des Produkts festlegen musst und dass das Produkt zwei relevante Tags hat: color:red
und color:orange
.
Eingabe | Ausgabe |
---|---|
{% capture mf_value %} {%- for tags_item in product.tags -%} {%- if tags_item contains "color:" -%} "{{- tags_item | remove_first: "color:" | strip -}}", {%- endif -%} {%- endfor -%} {% endcapture -%} [{{mf_value | remove_last: ","}}] |
["rot", "orange"] |
Dynamische E-Mail-Nachricht für eine Bestellung schreiben
Du möchtest beispielsweise einen Workflow erstellen, um eine E-Mail an einen Mitarbeiter zu senden, wenn ein Kunde mehr als 500 USD für eine Bestellung ausgibt. Du erstellst einen Workflow mithilfe des Triggers Bestellung erstellt, legst eine Bedingung fest, die wahr ist, wenn die Bestellsumme über 500 USD liegt, und verwendest die Aktion Interne E-Mail senden. Im Abschnitt Nachricht der Aktion Interne E-Mail senden verwendest du die folgenden Variablen.
Eingabe | Ausgabe |
---|---|
Bitte sende eine persönliche Dankesmitteilung an {{ order.customer.firstName }} {{ order.customer.lastName }}({{ order.customer.email }}) für die Bestellung in Höhe von {{ order.totalPriceSet.shopMoney.amount }}. | Bitte sende eine persönliche Dankesmitteilung an Jeanne Dupont (jeanne@example.com) für die Bestellung in Höhe von 763,42 USD. |
Dynamische E-Mail-Nachricht für ein Produkt mit niedrigem Lagerbestand schreiben
Du entscheidest, dass du einen Mitarbeiter informieren musst, wenn das Produktinventar gering ausfällt und eine Bestellung für mehr Lagerbestand aufgegeben werden muss. Du erstellst einen Workflow, der mit dem Trigger Inventarmenge geändert startet, und legst eine Bedingung, die wahr ist, fest, wenn die vorherige Inventarmenge kleiner oder gleich 10 ist. Im Abschnitt Nachricht der Aktion Interne E-Mail senden verwendest du die folgenden Variablen.
Eingabe | Ausgabe |
---|---|
Bitte bestelle "{{ product.title }}" nach. Sende eine E-Mail an inhaber@shop.de, um zu bestätigen, dass sie die Bestellung erhalten haben. | Bitte bestelle "High Waist Leggings – Schwarz" nach. Sende eine E-Mail an inhaber@shop.de, um zu bestätigen, dass sie die Bestellung erhalten haben. |
Dynamische E-Mail-Nachricht schreiben, um Mitarbeiter über eine betrügerische Bestellung zu informieren
Du möchtest Bestellungen mit einer hohen Risikostufe stornieren, aber möchtest lieber, dass deine Mitarbeiter die Bestellung manuell stornieren. Du erstellst einen Workflow, der mit dem Trigger Bestellung erstellt startet, und legst eine Bedingung fest, die wahr ist, wenn die Risikostufe der Bestellung gleich hoch ist. Im Abschnitt Nachricht der Aktion Interne E-Mail senden verwendest du die folgenden Variablen.
Eingabe | Ausgabe |
---|---|
Unser Shopify-Shop hat eine Bestellung mit hohem Betrugsrisiko erhalten. Wir möchten diese Bestellung sofort stornieren, bevor sie an die Produktion gesendet wird: {{ order.name }} {{ order.billingAddress.lastName }}, {{ order.billingAddress.firstName }} {{ order.email }} Bitte bestätigen Sie den neuen Bestellstatus. Danke! |
Unser Shopify-Shop hat eine Bestellung mit hohem Betrugsrisiko erhalten. Wir möchten diese Bestellung sofort stornieren, bevor sie an die Produktion gesendet wird: #1001 Dupont, Jeanne jeanne@beispiel.de Bitte bestätigen Sie den neuen Bestellstatus. Danke! |
Positionen für eine Bestellung mithilfe einer For-Schleife ausgeben
Wenn eine Bestellung eingegangen ist, kann es hilfreich sein, eine Nachricht mit den bestellten Produkten zu versenden. Dies kannst du mithilfe von for loop
tun, um wiederholt einen Codeblock auszuführen. Textfelder, die Variablen unterstützen, unterstützen auch for-Schleifen und das forloop-Objekt.
Du möchtest beispielsweise einen Workflow erstellen, der eine Liste aller SKUs und Mengen in einer Bestellung zurückgibt. Im Abschnitt Nachricht der Aktion Interne E-Mail senden verwendest du die folgenden Variablen.
Eingabe | Ausgabe |
---|---|
Bestellübersicht: {% for a in order.lineItems %} SKU: {{a.sku}} ( {{a.quantity}} ), {% endfor %} |
Bestellübersicht: 8987097979 (50) 8877778887 (3) 888998898B (1) |
Positionen für eine Bestellung mithilfe einer For-Schleife mit zusätzlichen Informationen ausgeben
Du entscheidest dich, der E-Mail weitere Informationen hinzuzufügen, einschließlich Produktname, Artikelnummer (SKU), Preis pro Artikel und Versandinformationen des Kunden. Im Abschnitt Nachricht der Aktion Interne E-Mail senden verwendest du die folgenden Variablen.
Eingabe | Ausgabe |
---|---|
Bestellübersicht: {% for a in order.lineItems %} Produkt: {{a.title}} SKU: {{a.sku}} Preis (pro Einheit): {{a.originalUnitPriceSet.shopMoney.amount}} USD Anzahl: {{a.quantity}} {% endfor %} |
Bestellübersicht: Produkt: High Waist Leggings – Schwarz SKU: 8987097979 Preis (pro Einheit): 8,49 USD Menge: 5 Produkt: Sportsocken – Blau SKU: 8889988B Preis (pro Einheit): 5,61 USD Menge: 2 |
Einige Positionen durch Kombination einer For-Schleife mit einer If-Anweisung ausgeben
Du musst verkaufte Artikel verfolgen, die von einem bestimmten Anbieter bereitgestellt werden. Im Abschnitt Nachricht der Aktion Interne E-Mail senden verwendest du die folgenden Variablen und schließt ein if
im Objekt for loop
ein.
Eingabe | Ausgabe |
---|---|
Verkauftes Acme-Produkt: {% for x in order.lineItems %} {% if x.vendor == 'acme-vendor' %} Produktname: {{x.title}} SKU: {{x.sku}} {% endif %} {% endfor %} |
Verkauftes Acme-Produkt: Produktname: High Waist Leggings – Schwarz SKU: 8987097979 |
Komplexe Datenobjekte in Shopify Flow
Flow ermöglicht dir den Zugriff auf fast alle Daten in der GraphQL-Admin-API. Das umfasst auch komplexe Datenobjekte wie Listen und Objekte. Es gibt jedoch Einschränkungen dahingehend, was du mit diesen Objekten machen kannst. In diesem Abschnitt werden die Einschränkungen beschrieben und es werden Beispiele bereitgestellt, die zeigen, wie du mit diesen Objekten arbeiten kannst.
Anstatt Listen und Objekte direkt aufzurufen, solltest du eine Schleife auf Liste anwenden und nur die gewünschten Felder einfügen.
Anstatt beispielsweise {{ order.lineItems }}
direkt aufzurufen, verwende das folgende Format zum Aufrufen bestimmter Felder. Diese Beispiele umfassen alle Felder, die beim direkten Aufruf der Liste oder des Objekts eingeschlossen werden würden. Kopiere die erforderlichen Felder und füge sie ein.