Liquid-variabler i Shopify Flow
Variabler är platshållare som ersätts med värden när en arbetsflöde körs. Dessa variabler beskriver attribut för kunder, ordrar och produkter som ingår i dina arbetsflöden. Det finns till exempel variabler för ordernummer, orderpris, kundnamn med mera. Variabler kan användas i villkor för att kontrollera logiken i ditt arbetsflöde eller för att mata ut data i en åtgärd.
På den här sidan
Om Liquid
Liquid är ett mallspråk som används för att komma åt variabler i åtgärder och för att skriva kod i Flow. Flow använder en variant av Liquid som närmast följer biblioteket med öppen källkod. Shopify-teman använder en annan variant av Liquid, men denna variant av Liquid är specifik för teman och innehåller många fler filter och taggar än vad Flow stöder, samt en annan syntax för åtkomst till variabler.
Liquid-variabler
Du kan lägga till Liquid-variabler i alla textfält som innehåller länken Lägg till en variabel. Klicka på länken Lägg till variabel under relevant fält och välj sedan en variabel från listan.
Variablerna i listan Lägg till en variabel filtreras så att du bara ser variablerna returneras i steg innan det aktuella steget, till exempel utlösare. Till exempel tillhandahåller utlösaren Order skapad order- och butiksresurser, som gör att du kan använda dig av alla variabler som är relaterade till ordern eller dina butiksinställningar som är tillgängliga i GraphQL Admin API. När du har valt en variabel från listan är den formaterad på rätt sätt och läggs till i textrutan åt dig.
Du kan också skriva liquid direkt i textblocket. Du kan till exempel använda variabeln {{ order.name }}
för att visa ordersträngen som visas i Shopify-admin, till exempel order-123.
Eftersom Flow använder GraphQL Admin-API för att hämta data som du använder i Liquid, använder den variabelsyntaxen "kamelnotation". Om du till exempel vill komma åt datumet då en produkt skapades anger du {{ product.createdAt }}
. Om du använder Liquid-syntaxen i ett Shopify-tema anger du {{ product.created_at }}
.
Liquid-taggar för villkorande och iteration
Ibland kan du vilja använda Liquid-taggar för att göra följande:
- Skriv villkorande påståenden, till exempel för att avgöra om en ordersumma är större än 100 USD
- Iterera genom en lista över objekt, till exempel utdata för varje radobjekt i en order
Du kan använda Liquid-taggar för att skriva dessa påståenden och iterera genom objekt.
Till exempel visar följande Liquid ordernumret om ordersumman är större än 100 USD:
Du kan även använda en för loop för att iterera genom en lista över objekt, till exempel radartiklar för en order. Följande Liquid visar till exempel namnet på varje radartikel i en order:
Flow stöder följande villkors-taggar för Liquid (eller kontrollflöde):
- if
- unless
- elsif/else
- case/when
- och/eller (flera villkor)
Flow stöder även följande Liquid iteration-taggar:
Filter
Filter gör det möjligt för dig att omvandla data i Liquid. Flow stöder alla Liquid-filter med öppen källkod.
Till exempel tar följande Liquid bort ett prefix från ett ordernamn och matar ut det som finns kvar: {{ order.name | remove: "Order-" }}
Förutom standard-Liquid-filtren tillhandahåller Flow datumfilter för att få ett datum i förhållande till ett annat datum för att stödja funktionerna Schemalagd tidsutlösare och Få data . Dessa filter är: date_minus
och date_plus
.
Så här returnerar du ett datum en dag i framtiden:{{ "now" | date_plus: "1 day" }}
Så här returnerar du ett datum en dag som gått:{{ "now" | date_minus: "1 day" }}
Dessa filter accepterar second
, minute
, day
, week
, month
och year
som varaktighetsenhet, både singular (t.ex. second
) och plural (t.ex. seconds
). Förutom det här formatet kan du även ange ett heltal (antal sekunder). Till exempel:{{ "now" | date_minus: 3600 }}
Du kan även leverera en ISO8601-varaktighetssträng, där P1Y2D
betyder 1 år och 2 dagar:{{ "now" | date_minus: "P1Y2D" }}
Överväganden för användning av Liquid-variabler i filter
- Flow stöder inte dot-notation som är tillgänglig för vissa filter. Flow stöder till exempel
{{ order.lineItems | size }}
men inte{{ order.lineItems.size }}
. - Flow stöder inte dot-notation för metafält. Du kan till exempel inte använda
{{ order.metafields.custom.hold_note }}
. Istället måste du loopa över metafälten som beskrivs i exemplen. - Flow stöder inte användning av index för att komma åt objekt i en lista. Du kan till exempel inte använda
{{ order.lineItems[0].title }}
. Istället måste du loopa över radobjekten så som beskrivs i exemplen.
Exempel
Överväg följande exempel för att få en bättre känsla av hur du använder Liquid-variabler.
Mata ut ett metafältvärde
Du vill mata ut värdet för ett order-metafält i ett e-postmeddelande. Metafältet är en sträng och har en namnrymd på custom
och en nyckel på hold_note
. Värdet för detta metafält är Please wait to deliver this order until April 1.
. Du skapar ett arbetsflöde med hjälp av utlösaren Order skapad och använder åtgärden Skicka internt e-postmeddelande. I avsnittet Meddelande i åtgärden Skicka internt e-postmeddelande använder du följande variabler.
Indata | Utdata |
---|---|
{% assign hold_note = order.metafields | where: "namespace", "custom" | where: "key", "hold_note" | first %} Ordern har en anteckning om vänteläge: {{ hold_note.value }} |
Ordern har en anteckning om vänteläge: Vänta med att leverera denna order fram till 1 april. |
Konvertera en lista med taggar till ett metafält
Du vill konvertera en uppsättning taggar till ett metafält som är en lista över textfält med en enda rad. Du skapar ett arbetsflöde med hjälp av utlösaren Produkt tillagd till butik och använder åtgärden Uppdatera metafält för produkt. I avsnittet Värde i åtgärden Uppdatera produktmetafält lägger du till följande liquid-kod. Det här exemplet förutsätter att du bara behöver ställa in värdena en gång när produkten skapas och att produkten har två relevanta taggar: color:red
och color:orange
.
Indata | Utdata |
---|---|
{% 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: ","}}] |
["röd","orange"] |
Skriv ett dynamiskt e-postmeddelande för en order
Du vill skapa ett arbetsflöde för att skicka ett e-postmeddelande till en anställd när en kund spenderar mer än 500 USD på en order. Du skapar ett arbetsflöde med hjälp av utlösaren Order skapad, anger ett villkor som är sant om ordersumman är över 500 USD och använder åtgärden Skicka internt e-postmeddelande. I avsnittet Meddelande i åtgärden Skicka internt e-postmeddelande använder du följande variabler.
Indata | Utdata |
---|---|
Skicka en personlig tackhälsning till {{ order.customer.firstName }} {{ order.customer.lastName }}({{ order.customer.email }}) för att de lade en order på {{ order.totalPriceSet.shopMoney.amount }} USD. | Skicka en personlig tackhälsning till Jeanne Dupont (jeanne@example.com) för att de lade en order på 763,42 USD. |
Skriv ett dynamiskt e-postmeddelande för en produkt som har låg lagernivå
Du bestämmer dig för att du behöver informera en medarbetare när produktlagret börjar bli lågt och en order måste läggas på fler lagerartiklar. Du skapar ett arbetsflöde som startar med utlösaren Lagerkvantitet ändrad och anger ett villkor som är sant om den tidigare lagerkvantiteten är mindre än eller lika med 10. I avsnittet Meddelande i åtgärden Skicka internt e-postmeddelande använder du följande variabler.
Indata | Utdata |
---|---|
Återbeställ {{ product.title }}. Skicka ett e-postmeddelande till owner@store.com för att verifiera att de har tagit emot inköpsordern. | Återbeställ Leggings med hög midja – svarta. Skicka ett e-postmeddelande till owner@example.com för att verifiera att de har tagit emot inköpsordern. |
Skriv ett dynamiskt e-postmeddelande för att meddela personal om en bedräglig order
Du vill annullera ordrar med hög risknivå men föredrar att din personal annullerar ordern manuellt. Du skapar ett arbetsflöde som startar med utlösaren Order skapad och anger ett villkor som är sant om risknivån för ordern är lika med hög. I avsnittet Meddelande i åtgärden Skicka internt e-postmeddelande använder du följande variabler.
Indata | Utdata |
---|---|
Vår Shopify-butik har fått en order med stor risk för bedrägeri. Vi vill omedelbart annullera denna order innan den skickas till produktion: {{ order.name }} {{ order.billingAddress.lastName }}, {{ order.billingAddress.firstName }} {{ order.email }} Bekräfta den nya orderstatusen. Tack! |
Vår Shopify-butik har fått en order med stor risk för bedrägeri. Vi vill omedelbart annullera denna order innan den skickas till produktion: #1001 Dupont, Jeanne jeanne@example.com Bekräfta den nya orderstatusen. Tack! |
Mata ut radartiklarna för en order med en för-loop
När en order tas emot kan det vara bra att skicka ett meddelande som innehåller de beställda produkterna. Du kan göra det genom att använda for loop
, som kör ett kodblock upprepade gånger. Textfält som stöder variabler stöder även for loops och forloop-objekt.
Du vill till exempel skapa ett arbetsflöde som returnerar en lista över alla SKU:er och kvantiteter i en order. I avsnittet Meddelande i åtgärden Skicka internt e-postmeddelande använder du följande variabler.
Indata | Utdata |
---|---|
Ordersammanfattning: {% for a in order.lineItems %} SKU: {{a.sku}} ( {{a.quantity}} ), {% endfor %} |
Ordersammanfattning: 8987097979 (50) 8877778887 (3) 888998898B (1) |
Mata ut radartiklarna för en order med en för-loop med ytterligare information
Du bestämmer dig för att lägga till mer information i e-postmeddelandet, inklusive produktnamn, SKU:er, pris per artikel och kundens leveransinformation. I avsnittet Meddelande i åtgärden Skicka internt e-postmeddelande använder du följande variabler.
Indata | Utdata |
---|---|
Ordersammanfattning: {% for a in order.lineItems %} Produkt: {{a.title}} SKU: {{a.sku}} Pris (per enhet): {{a.originalUnitPriceSet.shopMoney.amount}} USD Kvantitet: {{a.quantity}} {% endfor %} |
Ordersammanfattning: Produkt: Leggings med hög midja – svarta SKU: 8987097979 Pris (per enhet): 8,49 USD Kvantitet: 5 Produkt: Sportsockor – blå SKU: 888999888B Pris (per enhet): 5,61 USD Kvantitet: 2 |
Mata ut några radobjekt genom att kombinera en för-loop med ett om-påstående
Du måste spåra sålda artiklar som tillhandahålls av en specifik säljare. I avsnittet Meddelande i åtgärden Skicka e-postmeddelande använder du följande variabler och inkluderar ett if
-utdrag i din for loop
.
Indata | Utdata |
---|---|
Såld Acme-produkt: {% for x in order.lineItems %} {% if x.vendor == 'acme-vendor' %} Produktnamn: {{x.title}} SKU: {{x.sku}} {% endif %} {% endfor %} |
Såld Acme-produkt: Produktnamn: Leggings med hög midja – svarta SKU: 8987097979 |
Komplexa dataobjekt i Shopify Flow
Flow gör det möjligt för dig att komma åt nästan alla data som finns i GraphQL Admin API. Detta inkluderar komplexa dataobjekt, till exempel listor och objekt. Det finns dock vissa begränsningar för vad du kan göra med dessa objekt. Avsnittet beskriver dessa begränsningar och ger exempel på hur du kan arbeta med dem.
Istället för att anropa listor och objekt direkt bör du loopa över listan och bara inkludera de fält du vill ha.
Till exempel, istället för att anropa {{ order.lineItems }}
direkt kan du använda följande format för att anropa specifika fält. Dessa exempel inkluderar alla fält som skulle ingå om listan eller objektet anropades direkt. Kopiera och klistra in de fält du behöver.