Liquid-variabelen in Shopify Flow

Variabelen zijn tijdelijke aanduidingen die worden vervangen door waarden wanneer een workflow wordt uitgevoerd. Deze variabelen beschrijven de kenmerken van de klanten, bestellingen en producten waarop je workflows van toepassing zijn. Er zijn bijvoorbeeld variabelen voor het bestelnummer, de prijs van de bestelling, de klantnaam, enzovoort. Variabelen kunnen bijvoorbeeld in voorwaarden worden gebruikt om de logica in de workflow te bepalen of om gegevens in een actie uit te voeren.

Over Liquid

Liquid is een templatetaal die wordt gebruikt om toegang te krijgen tot variabelen in acties en om code te schrijven in Flow. Flow gebruikt een variant van Liquid die de opensource-bibliotheek het dichtst volgt. Shopify-thema's gebruiken een andere variant van Liquid, maar deze is specifiek voor thema's en bevat veel meer filters en tags dan Flow ondersteunt, en heeft een andere syntaxis voor het openen van variabelen.

Liquid-variabelen

Je kunt Liquid-variabelen toevoegen aan elk tekstveld met de link Variabele toevoegen. Klik op de link Variabele toevoegen onder het relevante veld en kies een variabele uit de lijst.

afbeelding waarin wordt weergegeven welke velden Liquid accepteren

De variabelen in de lijst Variabele toevoegen worden gefilterd, zodat je alleen de variabelen ziet die worden geretourneerd door stappen die aan de huidige stap voorafgaan, zoals triggers. De trigger Bestelling aangemaakt biedt bijvoorbeeld bestel- en winkelbronnen, waarmee je vervolgens variabelen kunt gebruiken die betrekking hebben op de bestelling of je winkelinstellingen die toegankelijk zijn in de GraphQL Admin API. Nadat je een variabele uit de lijst hebt gekozen, wordt deze correct opgemaakt en aan het tekstvak toegevoegd.

Je kunt de liquid ook rechtstreeks in het tekstblok schrijven. Je kunt bijvoorbeeld de variabele {{ order.name }} gebruiken om de om de bestellingstekenreeks weer te geven die in het Shopify-beheercentrum wordt gebruikt, zoals bestelling-123.

Omdat Flow de GraphQL Admin API gebruikt om gegevens op te halen die je in Liquid gebruikt, wordt in de variabelesyntaxis 'camel case' gebruikt (hoofd- en kleine letters naast elkaar). Als je bijvoorbeeld de datum waarop een product is aangemaakt wilt zien, voer je {{ product.createdAt }} in. Als je de Liquid-syntaxis in een Shopify-thema gebruikt, dan zou je {{ product.created_at }} invoeren.

Voorwaardelijke en Liquid-iteratietags

Soms kun je Liquid-tags gebruiken om het volgende te doen:

  • voorwaardelijke instructies schrijven, bijvoorbeeld om te bepalen of het totaal van een bestelling hoger is dan 100 USD;
  • iteraties uitvoeren in een lijst met objecten, bijvoorbeeld om gegevens weer te geven voor elke orderregel in een bestelling.

Je kunt Liquid-tags gebruiken om deze overzichten te schrijven en iteraties uit te voeren in objecten.

De volgende Liquid geeft bijvoorbeeld het bestelnummer weer als het totaal van de bestelling hoger is dan 100 USD:

{% if order.totalPriceSet.shopMoney.amount > 100 %}
  Order number: {{ order.name }}
{% endif %}

Je kunt ook een for-lus gebruiken om iteraties uit te voeren in een lijst met objecten, zoals orderregels voor een bestelling. De volgende Liquid geeft bijvoorbeeld de naam van elke orderregel in een bestelling weer:

{% for li in order.lineItems %}
  {{ li.title }}
{% endfor %}

Flow ondersteunt de volgende voorwaardelijke Liquid-tags (of controlestroom-tags):

Flow ondersteunt ook de volgende Liquid-iteratietags:

Filters

Met filters kun je gegevens in Liquid transformeren. Flow ondersteunt alle opensource Liquid-filters.

De volgende Liquid verwijdert bijvoorbeeld een voorvoegsel uit een bestelnaam en geeft weer wat er over is: {{ order.name | remove: "Order-" }}

Naast de standaard Liquid-filters biedt Flow datumfilters om een datum op te halen ten opzichte van een andere datum om de trigger Geplande tijd en de functies van Gegevens ophalen te ondersteunen. Deze filters zijn: date_minus en date_plus.

De datum van één dag na vandaag retourneren: {{ "now" | date_plus: "1 day" }}

De datum van één dag voor vandaag retourneren: {{ "now" | date_minus: "1 day" }}

Deze filters accepteren second, minute, day, week, month en year als de eenheid voor duur, zowel in het enkelvoud (zoals second) als in het meervoud (zoals seconds). Naast deze notatie kun je ook een geheel getal (aantal seconden) opgeven. Bijvoorbeeld:{{ "now" | date_minus: 3600 }}

Je kunt ook een ISO8601-tekenreeks voor duur opgeven, waarbij P1Y2D 1 jaar en 2 dagen betekent:{{ "now" | date_minus: "P1Y2D" }}

Aandachtspunten bij het gebruik van Liquid-variabelen in filters

  • Flow ondersteunt geen dot-notatie die bij sommige filters beschikbaar is. Flow ondersteunt bijvoorbeeld wel {{ order.lineItems | size }}, maar niet {{ order.lineItems.size }}.
  • Flow ondersteunt geen dot-notatie voor metavelden. Je kunt bijvoorbeeld niet {{ order.metafields.custom.hold_note }} gebruiken. In plaats daarvan gebruik je een lus over de metavelden, zoals in de voorbeelden is beschreven.
  • Flow ondersteunt geen gebruik van indexen om artikelen in een lijst te bekijken. Je kunt bijvoorbeeld niet {{ order.lineItems[0].title }} gebruiken. In plaats daarvan gebruik je een lus over de orderregels, zoals in de voorbeelden is beschreven.

Voorbeelden

Bekijk de volgende voorbeelden om een beter idee te krijgen van hoe je Liquid-variabelen kunt gebruiken.

Output-URL's voor bronnen

Je wil de output van de URL's voor de klant, de bestelling en het product die bij de workflow betrokken zijn.

# Output the base Admin URL for your store
https://admin.shopify.com/store/{{ shop.myShopifyDomain | replace: ".myshopify.com", "" }}

# Assign the base Admin url to a variable named base_url:
{%- capture base_url -%}https://admin.shopify.com/store/{{ shop.myShopifyDomain | replace: ".myshopify.com", "" }}{%- endcapture -%}

# Customer from a Customer trigger:
{{ base_url }}/customers/{{ customer.legacyResourceId }}

# Customer without the base_url:
https://admin.shopify.com/store/{{ shop.myShopifyDomain | replace: ".myshopify.com", "" }}/customers/{{ customer.legacyResourceId }}

# Customer from an Order trigger:
{{ base_url }}/customers/{{ order.customer.legacyResourceId }}

# Order:
{{ base_url }}/orders/{{ order.legacyResourceId }}

# Product:
{{ base_url }}/products/{{ product.legacyResourceId }}

# Product Variant:
{{ base_url }}/products/{{ product.legacyResourceId }}/variants/{{ productVariant.legacyResourceId }}

# Example showing a clickable link in HTML, making use of the URL:
<a href="{{ base_url }}/products/{{ product.legacyResourceId }}">{{ product.title }}</a>

Een lijst met tags omzetten naar een metaveld

Je wilt een reeks tags omzetten in een metaveld dat een lijst met tekstvelden van één regel is. Je maakt een workflow aan met de trigger Product toegevoegd aan winkel en gebruikt de actie Productmetaveld bijwerken. In de sectie Waarde van de actie Productmetaveld bijwerken voeg je de volgende Liquid-code toe. Bij dit voorbeeld gaan we ervan uit dat je de waarden maar een keer hoeft in te stellen wanneer het product is aangemaakt en dat het product twee relevante tags heeft: color:red en color:orange.

Voorbeeld van Liquid om de lijst van een tekstveld met één regel in te stellen.
InvoerUitvoer
{% 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: ","}}]
["rood","oranje"]

Een dynamisch e-mailbericht schrijven voor een bestelling

Je wilt een workflow aanmaken om een e-mail naar een medewerker te sturen wanneer een klant meer dan 500 USD aan een bestelling besteedt. Je maakt een workflow aan met de trigger Bestelling aangemaakt, stelt een voorwaarde in die waar is als de bestelling boven de 500 USD is en gebruikt de actie Interne e-mail sturen. In de sectie Bericht van de actie Interne e-mail sturen gebruik je de volgende variabelen.

Voorbeeld van variabele om klantgegevens op te geven.
InvoerUitvoer
Stuur een persoonlijk bedankje naar {{ order.customer.firstName }} {{ order.customer.lastName }}({{ order.customer.email }}) voor het plaatsen van een bestelling voor USD {{ order.totalPriceSet.shopMoney.amount }}.Stuur een persoonlijk bedankje naar Jeanne Dupont (jeanne@example.com) voor het plaatsen van een bestelling voor USD 763,42.

Een dynamisch e-mailbericht schrijven voor een product met een lage voorraad

Je besluit dat je een medewerker moet informeren wanneer de productvoorraad bijna op is en dat er een bestelling moet worden geplaatst om de voorraad aan te vullen. Je maakt een workflow aan die start met de trigger Voorraadaantallen gewijzigd en stelt een voorwaarde in die waar is als de voorraadaantallen voorafgaand kleiner is dan of gelijk is aan 10. In de sectie Bericht van de actie Interne e-mail sturen gebruik je de volgende variabelen.

Voorbeeld van het gebruik van een variabele om artikeldetails op te geven.
InvoerUitvoer
Bestel {{ product.title }} opnieuw. Stuur een owner@store.com om te verifiëren dat ze de inkooporder hebben ontvangen.Bestel zwarte leggings met een hoge taille opnieuw. Stuur een owner@example.com om te verifiëren dat ze de inkooporder hebben ontvangen.

Een dynamisch e-mailbericht schrijven om medewerkers op de hoogte te stellen van een frauduleuze bestelling

Je wilt bestellingen met een hoog risiconiveau annuleren, maar je geeft er de voorkeur aan dat je medewerkers de bestelling handmatig annuleren. Je maakt een workflow aan die start met de trigger Bestelling aangemaakt en stelt een voorwaarde in die waar is als het risiconiveau van de bestelling gelijk is aan hoog. In de sectie Bericht van de actie Interne e-mail sturen gebruik je de volgende variabelen.

Voorbeeld van veranderlijk gebruik om informatie over een frauduleuze bestelling te verstrekken.
InvoerUitvoer
Onze Shopify-winkel heeft een bestelling ontvangen met een hoog frauderisico. We willen deze bestelling meteen annuleren, voordat deze naar de productie wordt verzonden:

{{ order.name }}
{{ order.billingAddress.lastName }}, {{ order.billingAddress.firstName }}
{{ order.email }}

Bevestig de nieuwe bestelstatus. Bedankt!
Onze Shopify-winkel heeft een bestelling ontvangen met een hoog frauderisico. We willen deze bestelling meteen annuleren, voordat deze naar de productie wordt verzonden:

#1001
Dupont, Jeanne
jeanne@example.com

Bevestig de nieuwe bestelstatus. Bedankt!

De orderregels voor een bestelling uitvoeren met een lus 'voor'

Als je een bestelling ontvangt, kan het handig zijn om een bericht met de bestelde producten te verzenden. Je kunt dit doen door een for loop te gebruiken, die herhaaldelijk een codeblok uitvoert. Tekstvelden die variabelen ondersteunen, ondersteunen ook for loops en het forloop-object.

Je wilt bijvoorbeeld een workflow aanmaken waarmee een lijst met alle SKU's en hoeveelheden in een bestelling wordt geretourneerd. In de sectie Bericht van de actie Interne e-mail sturen gebruik je de volgende variabelen.

Voorbeeld van for loop om bestelgegevens op te geven.
InvoerUitvoer
Besteloverzicht:
{% for a in order.lineItems %}
SKU: {{a.sku}} ({{a.quantity}}),
{% endfor %}
Besteloverzicht:
8987097979 (50)
8877778887 (3)
888998898B (1)

De orderregels voor een bestelling uitvoeren met een lus 'voor' met aanvullende informatie

Je besluit meer informatie aan de e-mail toe te voegen, zoals de productnaam, SKU's, prijs per artikel en de verzendgegevens van de klant. In de sectie Bericht van de actie Interne e-mail sturen gebruik je de volgende variabelen.

Voorbeeld van for loop-gebruik om uitgebreidere bestelinformatie te bieden.
InvoerUitvoer
Besteloverzicht:
{% for a in order.lineItems %}
Product: {{a.title}}
SKU: {{a.sku}}
Prijs (per eenheid): $ {{a.originalUnitPriceSet.shopMoney.amount}}
Aantal: {{a.quantity}}
{% endfor %}
Besteloverzicht:
Product: zwarte legging met hoge taille
SKU: 8987097979
Prijs (per eenheid): USD 8,49
Aantal: 5
Product: blauwe sportsokken
SKU: 888998898B
Prijs (per eenheid): USD 5,61
Aantal: 2

Enkele orderregels uitvoeren door een lus 'voor' te combineren met een instructie 'als'

Je wilt verkochte artikelen volgen die door een bepaalde leverancier worden aangeleverd. In de sectie Bericht van de actie Interne e-mail sturen gebruik je de volgende variabelen en voeg je een if-expressie toe in de for loop.

Voorbeeld van for loop en als-functie om bestelgegevens op te geven voor specifieke verkopers.
InvoerUitvoer
Acme-product verkocht:
{% for x in order.lineItems %}
{% if x.vendor == 'acme-vendor' %}
Productnaam: {{x.title}}
SKU: {{x.sku}}
{% endif %}
{% endfor %}
Acme-product verkocht:
Productnaam: zwarte legging met hoge taille
SKU: 8987097979

Complexe gegevensobjecten in Shopify Flow

Met Flow heb je toegang tot bijna alle gegevens in de GraphQL Admin API. Dit omvat complexe gegevensobjecten, zoals lijsten en objecten. Er zijn echter enkele beperkingen aan wat je met deze objecten kunt doen. In de sectie worden deze beperkingen beschreven en worden voorbeelden gegeven van hoe je met deze beperkingen kunt werken.

In plaats van lijsten en objecten rechtstreeks aan te roepen, gebruik je een lus over de lijst en voeg je alleen de velden toe die je wilt gebruiken.

Gebruik bijvoorbeeld de volgende indeling om specifieke velden aan te roepen in plaats van rechtstreeks {{ order.lineItems }} aan te roepen. Deze voorbeelden bevatten alle velden die zouden worden opgenomen als je de lijst of het object rechtstreeks aanroept. Kopieer en plak de velden die je wilt gebruiken.

Zat het antwoord dat je zocht er niet bij? Wij helpen je graag verder.