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.
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.
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:
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:
Flow understøtter følgende betingede tags (eller kontrolflow-tags) i Liquid:
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.
Output-webadresser for ressourcer
Du vil outputte webadresserne for den kunde, den ordre og det produkt, som er involveret i et workflow.
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.
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 ([email protected]) 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 [email protected] for at kontrollere, om de har modtaget købsordren.
Genbestil Leggings med høj talje – Sorte. Send mail til [email protected] 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:
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:
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 %}
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 %}
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.
Textjson
Kan du ikke finde de svar, du leder efter? Vi er her for at hjælpe.