Premenné Liquid sú zástupné symboly definované v jazyku Liquid, ktoré sa pri spustení pracovného postupu nahradia hodnotami z rozhrania GraphQL Admin API. Premenné môžu opisovať atribúty zákazníkov, objednávok a produktov zapojených do vašich pracovných postupov, ako je číslo objednávky, cena objednávky alebo meno zákazníka. Premenné možno použiť v podmienkach na riadenie logiky v pracovnom postupe alebo na výstup údajov z akcie.
Pridávanie premenných do pracovných postupov pomocou jazyka Liquid
Pomocou jazyka Liquid môžete premenné pridať do akéhokoľvek textového poľa, ktoré obsahuje odkaz Pridať premennú. Kliknite na odkaz Pridať premennú pod príslušným poľom a následne vyberte premennú zo zoznamu.
Premenné v zozname Pridať premennú sú filtrované, takže používate len premenné, ktoré vracajú kroky predchádzajúce aktuálnemu kroku, ako sú napríklad spúšťače. Napríklad spúšťač Vytvorená objednávka poskytuje zdroje objednávky a obchodu z rozhrania Admin API, ktoré je možné vložiť ako premenné. Po výbere premennej zo zoznamu sa táto premenná pridá do textového poľa ako správne naformátovaný kód Liquid.
Kód Liquid môžete písať aj priamo do textového poľa. Ak napríklad chcete zobraziť reťazec objednávky z administrátora Shopify (napr. order-123), môžete použiť premennú {{ order.name }}.
Keďže Flow používa na získavanie údajov pre Liquid rozhranie Admin API, syntax premenných využíva formát camel case. V premenných vo formáte camel case sa prvé slovo začína malým písmenom a nasledujúce slová veľkým písmenom, napríklad firstName alebo canMarkAsPaid. Ak napríklad chcete získať prístup k dátumu vytvorenia produktu, zadajte {{ product.createdAt }}. Ak používate syntax Liquid v téme Shopify, ktorá nepoužíva formát camel case, zadali by ste {{ product.created_at }}.
Podmienené a iteračné značky Liquid
Značky Liquid sa môžu používať s premennými na vykonávanie nasledujúcich funkcií:
Zápis podmienených príkazov, napríklad na určenie, či je celková suma objednávky vyššia ako 100 USD.
Iterácia v zozname objektov, napríklad na výstup údajov pre každú samostatnú položku v objednávke.
Na zápis týchto príkazov a iteráciu objektov môžete použiť značky Liquid.
Nasledujúci kód Liquid napríklad zobrazí číslo objednávky, ak je celková suma objednávky vyššia ako 100 USD:
{% if order.totalPriceSet.shopMoney.amount > 100 %}
Order number: {{ order.name }}
{% endif %}
Na iteráciu cez zoznam objektov, napríklad samostatných položiek objednávky, môžete použiť aj slučku for. Nasledujúci kód Liquid napríklad zobrazí názov každej samostatnej položky v objednávke:
{% for li in order.lineItems %}
{{ li.title }}
{% endfor %}
Flow podporuje nasledujúce podmienené (alebo riadiace) značky Liquid:
Údaje premenných v jazyku Liquid môžete transformovať pomocou filtrov. Flow podporuje všetky filtre Liquid s otvoreným zdrojovým kódom.
Nasledujúci kód Liquid napríklad odstráni predponu z názvu objednávky a vypíše to, čo zostane: {{ order.name | remove: "Order-" }}
Dôležité informácie o používaní premenných Liquid vo filtroch
Pred transformáciou premenných pomocou filtrov zvážte tieto dôležité informácie:
Flow nepodporuje bodkovú notáciu, ktorá je dostupná pre niektoré filtre. Napríklad Flow podporuje {{ order.lineItems | size }}, ale nie {{ order.lineItems.size }}.
Flow nepodporuje bodkovú notáciu pre metapolia. Nemôžete napríklad použiť {{ order.metafields.custom.hold_note }}. Namiesto toho musíte prechádzať metapolia v cykle tak, ako je to uvedené v príkladoch.
Flow nepodporuje používanie indexov na prístup k položkám v zozname. Nemôžete napríklad použiť {{ order.lineItems[0].title }}. Namiesto toho musíte prechádzať samostatné položky v cykle tak, ako je to uvedené v príkladoch.
Filtre dátumu
Okrem štandardných filtrov Liquid poskytuje Flow filtre dátumu na získanie dátumu relatívneho k inému dátumu na podporu spúšťača Scheduled time (Naplánovaný čas) a funkcií Get data (Získať údaje). Tieto filtre sú: date_minus a date_plus. Napríklad:
Vrátenie dátumu o jeden deň v budúcnosti: {{ "now" | date_plus: "1 day" }}
Vrátenie dátumu o jeden deň v minulosti: {{ "now" | date_minus: "1 day" }}
Tieto filtre akceptujú second, minute, day, week, month a year ako jednotku trvania, a to v jednotnom (napríklad second) aj v množnom čísle (napríklad seconds). Môžete tiež zadať nasledujúce typy prispôsobiteľných jednotiek:
Celé číslo predstavujúce počet sekúnd: {{ "now" | date_minus: 3600 }}, kde 3600 zodpovedá 1 hodine.
Flow poskytuje kryptografické filtre na hešovanie a vytváranie overovacích kódov správ založených na hešovaní (HMAC). Tieto filtre sú užitočné na vytváranie jedinečných identifikátorov, kontrolných súčtov alebo na integráciu so systémami tretej strany, ktoré vyžadujú špecifické formáty hešov.
Hešovacie filtre
Shopify Flow podporuje nasledujúce typy hešovacích filtrov:
blake3 – Vytvára heš BLAKE3 (odporúča sa na všeobecné použitie).
Na všeobecné účely hešovania a nové implementácie by ste mali používať blake3, pretože ponúka lepšiu výkonnosť a bezpečnosť v porovnaní so staršími algoritmami. Avšak filtre sha256, sha1 a md5 sú k dispozícii z dôvodu kompatibility so systémami tretej strany.
Chcete získať na výstupe adresy URL zákazníka, objednávky a produktu, ktoré sú súčasťou pracovného postupu.
# 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>
Konvertovanie zoznamu štítkov na metapole
Chcete konvertovať skupinu štítkov na metapole, ktoré predstavuje zoznam jednoriadkových textových polí. Vytvoríte pracovný postup pomocou spúšťača Produkt pridaný do obchodu a použijete akciu Aktualizovať metapole produktu. V časti Hodnota akcie Aktualizovať metapole produktu pridáte nasledujúci kód jazyka Liquid. Tento príklad predpokladá, že hodnoty stačí nastaviť iba raz pri vytvorení produktu a že produkt má dva relevantné štítky: color:red a color:orange.
Príklad kódu v jazyku Liquid na nastavenie zoznamu jednoriadkového textového poľa.
Vytvorenie dynamickej e-mailovej správy pre objednávku
Chcete vytvoriť pracovný postup na odoslanie e-mailu zamestnancovi, keď zákazník minie na objednávku viac ako 500 $. Vytvoríte pracovný postup pomocou spúšťača Objednávka vytvorená, nastavíte podmienku, ktorá je splnená, ak je celková suma objednávky vyššia ako 500 $, a použijete akciu Odoslať interný e-mail. V časti Správa akcie Odoslať interný e-mail použijete nasledujúce premenné.
Príklad použitia premennej na poskytnutie detailov o zákazníkovi.
Vstup
Výstup
Please send a personal thank you note to {{ order.customer.firstName }} {{ order.customer.lastName }}({{ order.customer.email }}) for placing an order for $ {{ order.totalPriceSet.shopMoney.amount }}.
Pošlite osobné poďakovanie Jeanne Dupont (jeanne@example.com) za objednávku v hodnote 763,42 $.
Napísanie dynamickej e‑mailovej správy pre produkt s nízkymi zásobami
Rozhodnete sa, že potrebujete informovať personál, keď sa množstvo zásob produktu zníži a je potrebné zadať objednávku na ďalšie zásoby. Vytvoríte pracovný postup, ktorý sa začína spúšťačom Zmena množstva zásob, a nastavíte podmienku, ktorá je splnená, ak bolo predchádzajúce množstvo zásob menšie alebo rovné 10. V sekcii Správa akcie Odoslať interný e‑mail použijete nasledujúce premenné.
Príklad použitia premennej na poskytnutie detailov o položke.
Vstup
Výstup
Please reorder {{ product.title }}. Email owner@store.com to verify that they've received the purchase order.
Objednajte znova produkt High Waist Leggings - Black. Odošlite e‑mail na adresu owner@example.com a overte, či prijali nákupnú objednávku.
Napísanie dynamickej e‑mailovej správy, ktorá upozorní personál na podvodnú objednávku
Chcete zrušiť objednávky, ktoré majú vysokú úroveň rizika, ale uprednostňujete, aby personál zrušil objednávku manuálne. Vytvoríte pracovný postup, ktorý sa začína spúšťačom Vytvorenie objednávky, a nastavíte podmienku, ktorá je splnená, ak je úroveň rizika objednávky vysoká. V sekcii Správa akcie Odoslať interný e‑mail použijete nasledujúce premenné.
Príklad použitia premennej na poskytnutie informácií o podvodnej objednávke.
Vstup
Výstup
Our Shopify store has received an order with a high risk of fraud. We would like to cancel this order right away, before it is sent to production:
{{ order.name }}
{{ order.billingAddress.lastName }}, {{ order.billingAddress.firstName }}
{{ order.email }}
Please confirm the new order status. Thanks!
Náš obchod Shopify prijal objednávku s vysokým rizikom podvodu. Túto objednávku by sme chceli okamžite zrušiť, skôr než sa odošle do výroby:
#1001
Dupont, Jeanne
jeanne@example.com
Potvrďte nový stav objednávky. Ďakujeme!
Výpis samostatných položiek objednávky pomocou cyklu for
Keď prijmete objednávku, môže byť užitočné odoslať správu s objednanými produktmi. Môžete to urobiť pomocou cyklu for loop (cyklus for), ktorý opakovane vykonáva blok kódu. Textové polia, ktoré podporujú premenné, podporujú aj cykly for a objekt forloop.
Chcete napríklad vytvoriť pracovný postup, ktorý vráti zoznam všetkých SKU a množstiev v objednávke. V sekcii Správa akcie Odoslať interný e‑mail použijete nasledujúce premenné.
Príklad použitia cyklu for na poskytnutie informácií o objednávke.
Vstup
Výstup
Order summary:
{% for a in order.lineItems %}
{{a.sku}} ( {{a.quantity}} )
{% endfor %}
Výpis samostatných položiek objednávky pomocou cyklu for s ďalšími informáciami
Rozhodnete sa pridať do e‑mailu ďalšie informácie vrátane názvu produktu, kódov SKU, ceny za položku a informácií o doprave pre zákazníka. V sekcii Správa akcie Odoslať interný e‑mail použijete nasledujúce premenné.
Príklad použitia cyklu for na poskytnutie rozsiahlejších informácií o objednávke.
Vstup
Výstup
Order summary:
{% for a in order.lineItems %}
Product: {{a.title}}
SKU: {{a.sku}}
Price (per unit): ${{a.originalUnitPriceSet.shopMoney.amount}}
Quantity: {{a.quantity}}
{% endfor %}
Súhrn objednávky:
Produkt: High Waist Leggings - Black
SKU: 8987097979
Cena (za jednotku): 8,49 $
Množstvo: 5
Produkt: Athletic Socks - Blue
SKU: 888998898B
Cena (za jednotku): 5,61 $
Množstvo: 2
Výpis niektorých samostatných položiek kombináciou cyklu for s podmienkou if
Potrebujete sledovať predané položky, ktoré dodáva konkrétny dodávateľ. V sekcii Správa akcie Odoslať interný e‑mail použijete nasledujúce premenné a do cyklu for loop zahrniete podmienku if.
Príklad použitia cyklu for a podmienky if na poskytnutie informácií o objednávke pre konkrétnych dodávateľov.
Vstup
Výstup
Acme product sold:
{% for x in order.lineItems %}
{% if x.vendor == 'acme-vendor' %}
Product name: {{x.title}}
SKU: {{x.sku}}
{% endif %}
{% endfor %}
Predaný produkt Acme:
Názov produktu: High Waist Leggings - Black
SKU: 8987097979
Komplexné dátové objekty v aplikácii Shopify Flow
Aplikácia Flow umožňuje prístup takmer ku všetkým dátam v GraphQL Admin API. To zahŕňa komplexné dátové objekty, ako sú zoznamy a objekty. Existujú však určité obmedzenia týkajúce sa toho, čo môžete s týmito objektmi robiť. Táto sekcia opisuje tieto obmedzenia a poskytuje príklady, ako s nimi pracovať.
Namiesto priameho volania zoznamov a objektov by ste mali zoznam prejsť cyklom a zahrnúť len tie polia, ktoré chcete.
Namiesto priameho volania {{ order.lineItems }} použite na volanie konkrétnych polí napríklad nasledujúci formát. Tieto príklady obsahujú všetky polia, ktoré by boli zahrnuté priamym volaním zoznamu alebo objektu. Skopírujte a prilepte polia, ktoré potrebujete.
Text
{% for li in order.lineItems %}
{% comment %}li.contract - omitted{% endcomment %}