Liquid-variabler i Shopify Flow

Variabler er pladsholdere, der erstattes af værdier, når et workflow kører. Disse variabler beskriver attributterne for de kunder, ordrer og produkter, der var involveret i dit workflow. Der er f.eks. variabler for ordrenummer, pris for ordren, kundenavn osv. Variabler kan bruges i betingelser for at styre logikken i dit workflow eller til at outputte data i en handling.

Om Liquid

Liquid er et skabelonsprog, der bruges til at tilgå variabler i handlinger og til at skrive kode i Flow. Flow bruger en variant af Liquid, der følger opensource-biblioteket mest. Shopify-temaer bruger en anden variant af Liquid, men denne variant af Liquid er specifik for temaer og indeholder mange flere filtre og tags, end Flow understøtter, samt en anden syntaks for adgang til variabler.

Liquid-variabler

Du kan føje Liquid-variabler til alle tekstfelter, der indeholder linket Tilføj variabel. Klik på linket Tilføj en variabel under det relevante felt, og vælg derefter en variabel på listen.

billede, der viser, hvilke felter der accepterer Liquid

Variablerne på listen Tilføj en variabel er filtreret, så du kun får vist variablerne efter trin forud for det aktuelle trin, som f.eks. udløsere. Udløseren Ordren blev oprettet leverer f.eks. ordre- og butiksressourcer, som så giver dig mulighed for at bruge eventuelle variabler, der er relateret til ordren, eller dine butiksindstillinger, som er tilgængelige i GraphQL Admin API'en. Når du har valgt en variabel på listen, formateres den korrekt og føjes til tekstboksen for dig.

Du kan også skrive Liquid-variablen direkte i tekstblokken. Du kan f.eks. bruge variablen {{ order.name }} til at vise den ordrestreng, der vises i Shopify-administratoren, f.eks. ordre-123.

Da Flow bruger GraphQL Admin API'en til at hente data, som du bruger i Liquid, bruger den variable syntaks CamelCase. Hvis du f.eks. vil have adgang til den dato, hvor et produkt blev oprettet, skal du indtaste {{ product.createdAt }}. Hvis du bruger Liquid-syntaks i et Shopify-tema, skal du indtaste {{ product.created_at }}.

Betingede Liquid-tags og gentagne Liquid-tags

Nogle gange kan det være en hjælp at bruge Liquid-tags til at gøre følgende:

  • Skriv betingende udsagn, f.eks. til at fastslå, om en ordretotal er større end 100 USD
  • Gentag for alle objekter på en liste som f.eks. at outputte data for hver varelinje i en ordre

Du kan bruge Liquid-tags til at skrive disse udsagn og gentage for flere objekter.

Den følgende Liquid viser f.eks. ordrenummeret, hvis ordretotalen er større end 100 USD:

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

Du kan også bruge en for loop at gentage handlingen for alle objekter på en liste, som f.eks. varelinjer for en ordre. Den følgende Liquid viser f.eks. navnet på hver varelinje i en ordre:

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

Flow understøtter følgende betingede tags (eller kontrolflow-tags) i Liquid:

Flow understøtter også følgende gentagne tags i Liquid:

Filtrer

Filtre giver dig mulighed for at omdanne data i Liquid. Flow understøtter alle opensource Liquid-filtre.

Den følgende Liquid fjerner f.eks. et præfiks fra et ordrenavn og outputter det, der er tilbage: {{ order.name | remove: "Order-" }}

Ud over de almindelige Liquid-filtre indeholder Flow datofiltre, så du kan finde en dato i forhold til en anden dato for at understøtte udløseren Planlagt tidspunkt og funktionen Hent data. Disse filtre er: date_minus og date_plus.

Sådan returnerer du en dato, der er én dag i fremtiden:{{ "now" | date_plus: "1 day" }}

Sådan returnerer du en dato, der er én dag i fortiden:{{ "now" | date_minus: "1 day" }}

Disse filtre accepterer second, minute, day, week, month og year som varighedsenhed, både ental (som f.eks. second) og flertal (f.eks. seconds). Ud over dette format kan du også angive et heltal (antal sekunder). For eksempel:{{ "now" | date_minus: 3600 }}

Du kan også angive en ISO8601-varighedsstreng, hvor P1Y2D betyder 1 år og 2 dage:{{ "now" | date_minus: "P1Y2D" }}

Overvejelser i forbindelse med brugen af Liquid-variabler i filtre

  • Flow understøtter ikke punktnotation, der er tilgængeligt for nogle filtre. Flow understøtter f.eks. {{ order.lineItems | size }}, men ikke {{ order.lineItems.size }}.
  • Flow understøtter ikke punktnotation til metafelter. Du kan f.eks. ikke bruge {{ order.metafields.custom.hold_note }}. I stedet skal du loope over metafelterne som beskrevet i eksemplerne.
  • Flow understøtter ikke adgang til varer på en liste ved hjælp af indekser. Du kan f.eks. ikke bruge {{ order.lineItems[0].title }}. Du skal i stedet loope over varelinjerne, som angivet i eksemplerne.

Eksempler

Overvej følgende eksempler for at få en bedre fornemmelse af, hvordan man bruger Liquid-variabler.

Opret en metafeltværdi

Du vil oprette værdien af et metafelt for ordrer i en mail. Metafeltet er en streng og har et navneområde med custom og en nøgle med hold_note. Værdien af dette metafelt er Please wait to deliver this order until April 1.. Du opretter et workflow ved hjælp af udløseren Ordren blev oprettet og bruger handlingen Send intern mail. I afsnittet Besked bruger du følgende variabler under handlingen Send intern mail.

Eksempel på brugen af variabel til at outputte et metafelt for ordre.
Input Output
{% assign hold_note = order.metafields | where: "namespace", "custom" | where: "key", "hold_note" | first %}
Ordren har en pausebemærkning, der siger: {{ hold_note.value }}
Ordren har en pausebemærkning, der siger: Vent med at levere denne ordre indtil den 1. april.

Konverter en liste med tags til et metafelt

Du ønsker at konvertere et sæt tags til et metafelt, der er en liste over felter med en enkelt tekstlinje. Du opretter et workflow ved hjælp af udløseren Produktet blev føjet til butikken og bruger handlingen Opdater metafelt for produkt. Du tilføjer følgende Liquid-kode i afsnittet Værdi for handlingen Opdater metafelt for produkt. I dette eksempel antages det, at du først skal angive værdier, når produktet er blevet oprettet, og at produktet har to relevante tags: color:red og color:orange.

Liquid-eksemel på en liste over felter med en enkelt tekstlinje.
Input Output
{% 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: ","}}]
["red","orange"]

Skriv en dynamisk mailbesked for en ordre

Du vil oprette et workflow, der sender en mail til en medarbejder, når en kunde bruger mere end 500 USD på en ordre. Du opretter et workflow ved hjælp af udløseren Ordren blev oprettet, angiver en betingelse, der er sand, hvis ordretotalen er over 500 USD, og bruger handlingen Send intern mail. I afsnittet Besked bruger du følgende variabler under handlingen Send intern mail.

Eksempel på brug af variabler til at angive kundeoplysninger.
Input Output
Send en personlig takkebesked til {{ order.customer.firstName }} {{ order.customer.lastName }}({{ order.customer.email }}) for at afgive en ordre på {{ order.totalPriceSet.shopMoney.amount }} USD. Send en personlig takkebesked til Jeanne Dupont (jeanne@example.com) for at afgive en ordre på 763,42 USD.

Skriv en dynamisk mailbesked for et produkt med lav lagerbeholdning

Du beslutter, at du skal informere medarbejderne, når et produktlager er lavt, og der skal afgives en ordre på ekstra lagerbeholdning. Du opretter et workflow, der starter med udløseren Lagerantallet er ændret, og angiver en betingelse, der er sand, hvis det forudgående lagerantal er mindre end eller lig med 10. Du bruger følgende variabler under handlingen Send intern mail i afsnittet Besked.

Eksempel på brug af variabler til at angive vareoplysninger.
Input Output
Genbestil {{ product.title }}. Send mail til ejer@butik.com for at kontrollere, om de har modtaget købsordren. Genbestil Leggings med høj talje – Sorte. Send mail til ejer@example.com for at kontrollere, om de har modtaget købsordren.

Skriv en dynamisk mailbesked for at give medarbejdere besked om en svigagtig ordre

Du vil annullere ordrer, der har et højt risikoniveau, men foretrækker, at dine medarbejdere annullerer ordren manuelt. Du opretter et workflow, der starter med udløseren Ordren blev oprettet, og angiver en betingelse, der er sand, hvis risikoniveauet for ordren er lig med højt. Du bruger følgende variabler under handlingen Send intern mail i afsnittet Besked.

Eksempel på brug af variabler til at angive oplysninger om en svigagtig ordre.
Input Output
Vores Shopify-butik har modtaget en ordre med en høj risiko for svindel. Vi vil gerne annullere denne ordre med det samme, inden den sendes til produktion:

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

Bekræft den nye ordrestatus. Tak!
Vores Shopify-butik har modtaget en ordre med en høj risiko for svindel. Vi vil gerne annullere denne ordre med det samme, inden den sendes til produktion:

#1001
Dupont, Jeanne
jeanne@example.com

Bekræft den nye ordrestatus. Tak!

Opret varelinjerne for en ordre ved hjælp af et for loop

Når en ordre er modtaget, kan det være nyttigt at sende en besked, der indeholder de bestilte produkter. Du kan gøre dette ved at bruge for loop, som gentagne gange udfører en kodeblok. Tekstfelter, der understøtter variabler, understøtter også for loops og forloop-objektet.

Du vil f.eks. oprette et workflow, der returnerer en liste over alle SKU'er og antal i en ordre. Du bruger følgende variabler under handlingen Send intern mail i afsnittet Besked.

Eksempel på brug af for loop til at angive ordreoplysninger.
Input Output
Ordreoversigt:
{% for a in order.lineItems %}
SKU: {{a.sku}} ( {{a.quantity}} ),
{% endfor %}
Ordreoversigt:
8987097979 (50)
8877778887 (3)
888998898B (1)

Opret varelinjerne for en ordre ved hjælp af et for loop med yderligere oplysninger

Du beslutter dig for at tilføje flere oplysninger i mailen, herunder produktnavnet, SKU'er, pris pr. vare og kundens leveringsoplysninger. Du bruger følgende variabler under handlingen Send intern mail i afsnittet Besked.

Eksempel på brug af for loop til at angive mere omfattende ordreoplysninger.
Input Output
Ordreoversigt:
{% for a in order.lineItems %}
Produkt: {{a.title}}
SKU: {{a.sku}}
Pris (pr. enhed): USD {{a.originalUnitPriceSet.shopMoney.amount}}
Antal: {{a.quantity}}
{% endfor %}
Ordreoversigt:
Produkt: Leggings med høj talje – Sorte
SKU: 8987097979
Pris (pr enhed): 8,49 USD
Antal: 5
Produkt: Sportsstrømper – Blå
SKU: 888998898B
Pris (pr. enhed): 5,61 USD
Antal: 2

Opret nogle varelinjer ved at kombinere et for loop med en “hvis”-erklæring

Du skal spore solgte varer, der leveres af en bestemt forhandler. Du bruger følgende variabler og inkluderer en if-erklæring i dit for loop under handlingen Send intern mail i afsnittet Besked.

Eksempel på for loop og "hvis"-erklæring, der bruges til at angive ordreoplysninger for specifikke forhandlere.
Input Output
Solgt Acme-produkt:
{% for x in order.lineItems %}
{% if x.vendor == 'acme-vendor' %}
Produktnavn: {{x.title}}
SKU: {{x.sku}}
{% endif %}
{% endfor %}
Solgt Acme-produkt:
Produktnavn: Leggings med høj talje – Sorte
SKU: 8987097979

Komplekse dataobjekter i Shopify Flow

Flow giver dig mulighed for at tilgå næsten alle data i GraphQL Admin API'en. Dette omfatter komplekse dataobjekter, som f.eks. lister og objekter. Der er dog nogle begrænsninger for, hvad du kan gøre med disse objekter. Afsnittet skitserer disse begrænsninger og giver eksempler på, hvordan du kan bruge dem.

I stedet for at kalde lister og objekter direkte, bør du loope over listen og kun inkludere de felter, du ønsker.

Eksempel: Brug følgende formater til at kalde specifikke felter i stedet for at kalde {{ order.lineItems }} direkte. Disse eksempler inkluderer alle de felter, der ville være inkluderet ved direkte kald til listen eller objektet. Kopiér og indsæt de felter, du har brug for.

Er du klar til at begynde at sælge med Shopify?

Prøv det gratis