Folyékony változók használata a Shopify Flow alkalmazásban
A folyékony változók a Liquidben definiált helyőrzők, amelyeket egy munkafolyamat futtatásakor a GraphQL Admin API-ból származó értékek helyettesítenek. A változók leírhatják a munkafolyamatokban részt vevő vásárlók, rendelések és termékek jellemzőit, például a rendelési számot, a rendelés árát vagy a vásárlónevet. A változók felhasználhatók feltételekben a munkafolyamat logikájának szabályozására, vagy adatok kiadására egy műveletből.
Változók hozzáadása a munkafolyamatokhoz a Liquid használatával
A Liquid használatával bármely olyan szövegmezőhöz hozzáadhat változókat, amely tartalmazza a Változó hozzáadása hivatkozást. Kattintson a megfelelő mező alatti Változó hozzáadása hivatkozásra, majd válasszon egy változót a listából.
A Változó hozzáadása listában lévő változók szűrve vannak, így Ön csak azokat a változókat használhatja, amelyeket az aktuális lépést megelőző lépések, például a kiváltók adnak vissza. A Rendelés létrehozva kiváltó például az Admin API-ból származó rendelési és bolti erőforrásokat biztosít, amelyek változóként beilleszthetők. Miután kiválasztott egy változót a listából, az megfelelően formázott Liquid-kódként bekerül a szövegdobozba.
A Liquid-kódot közvetlenül a szövegmezőbe is beírhatja. Például az {{ order.name }} változóval megjelenítheti a rendelés karakterláncát a Shopify adminisztrációs felületéről, például az order-123 értéket.
Mivel a Flow az Admin API-t használja a Liquid által használt adatok lekéréséhez, a változók szintaxisa tevepúpnotációt használ. A tevepúpnotációs változókban az első szó kisbetűvel, a további szavak pedig nagybetűvel kezdődnek, például a firstName vagy a canMarkAsPaid. Egy termék létrehozási dátumának eléréséhez például adja meg a {{ product.createdAt }} kódot. Ha a Liquid szintaxist egy Shopify-témában használja, amely nem használ tevepúpnotációt, akkor a {{ product.created_at }} kódot kell megadnia.
Feltételes és iterációs Liquid-címkék
A Liquid-címkék változókkal együtt használhatók a következő funkciók elvégzésére:
Feltételes utasítások írása, például annak meghatározása, hogy egy rendelés végösszege nagyobb-e 100 dollárnál.
Objektumok listáján való iterálás, például egy rendelés minden egyes sorelemére vonatkozó adatok kiadása.
Ezen utasítások megírásához és az objektumokon való iteráláshoz használhat Liquid-címkéket.
Például a következő Liquid-kód megjeleníti a rendelési számot, ha a rendelés végösszege meghaladja a 100 dollárt:
{% if order.totalPriceSet.shopMoney.amount > 100 %}
Order number: {{ order.name }}
{% endif %}
Használhat for ciklust is egy objektumlista, például egy rendelés sorelemeinek iterálásához. A következő Liquid-kód például megjeleníti a rendelés minden sorelemének a nevét:
{% for li in order.lineItems %}
{{ li.title }}
{% endfor %}
A Flow a következő Liquid feltételes (vagy vezérlési folyamat) címkéket támogatja:
A Liquidben szűrők segítségével alakíthatja át a változók adatait. A Flow támogatja az összes nyílt forráskódú Liquid-szűrőt.
Például a következő Liquid-kód eltávolít egy előtagot egy rendelés nevéből, és kiadja a megmaradt részt: {{ order.name | remove: "Order-" }}
Megfontolások a Liquid-változók szűrőkben való használatához
Mielőtt szűrőkkel alakítaná át a változókat, tekintse át a következő megfontolásokat:
A Flow nem támogatja a pontos jelölést (dot notation), amely egyes szűrőknél elérhető. Például a Flow támogatja a {{ order.lineItems | size }} formátumot, de a {{ order.lineItems.size }} formátumot nem.
A Flow nem támogatja a pontos jelölést a metamezők esetében. Például nem használhatja a {{ order.metafields.custom.hold_note }} formátumot. Ehelyett a metamezőkön a példákban vázoltak szerint kell végigiterálnia.
A Flow nem támogatja az indexek használatát a listaelemek eléréséhez. Például nem használhatja a {{ order.lineItems[0].title }} formátumot. Ehelyett a sorelemeken a példákban vázoltak szerint kell végigiterálnia.
Dátumszűrők
A szabványos Liquid-szűrőkön kívül a Flow dátumszűrőket is biztosít egy másik dátumhoz viszonyított dátum lekéréséhez, hogy támogassa az Ütemezett időpont kiváltót és az Adatok lekérése funkciót. Ezek a szűrők a következők: date_minus és date_plus. Például:
Egy jövőbeli, egy nappal későbbi dátum visszaadása: {{ "now" | date_plus: "1 day" }}
Egy múltbeli, egy nappal korábbi dátum visszaadása: {{ "now" | date_minus: "1 day" }}
Ezek a szűrők időtartam-egységként elfogadják a second, minute, day, week, month és year értéket, mind egyes (például second), mind többes számban (például seconds). A következő típusú testreszabható egységeket is megadhatja:
A másodpercek számát jelölő egész szám: {{ "now" | date_minus: 3600 }}, ahol a 3600 1 órának felel meg.
A Flow kriptográfiai szűrőket biztosít a hasheléshez és a hash-alapú üzenet-hitelesítési kódok (HMAC) létrehozásához. Ezek a szűrők hasznosak egyedi azonosítók, ellenőrző összegek létrehozásához, vagy olyan harmadik féltől származó rendszerekkel való integrációhoz, amelyek meghatározott hash formátumokat igényelnek.
Hashelő szűrők
A Shopify Flow a következő típusú hashelő szűrőket támogatja:
blake3 – BLAKE3-hash-t hoz létre (általános használatra ajánlott).
Általános hashelési célokra és új implementációkhoz a blake3 használata javasolt, mivel a régebbi algoritmusokhoz képest jobb teljesítményt és biztonságot nyújt. A sha256, a sha1 és az md5 azonban a harmadik felek rendszereivel való kompatibilitás érdekében továbbra is elérhető.
Példa a használatra:
{{ "hello world" | blake3 }} a „hello world” szöveg BLAKE3-hash-értékét adja vissza.
HMAC-szűrők
HMAC titkos kulccsal való létrehozásához használja az alábbi támogatott szűrők egyikét:
Ki szeretné íratni a munkafolyamatban érintett vásárló, rendelés és termék URL-címeit.
# 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>
Címkelista átalakítása metamezővé
Egy címkekészletet szeretne metamezővé alakítani, amely egysoros szöveges mezők listája. Létrehoz egy munkafolyamatot a Termék hozzáadva az üzlethez kiváltóval, és használja a Termék metamezőjének frissítése műveletet. A Termék metamezőjének frissítése művelet Érték szakaszában adja hozzá a következő Liquid-kódot. Ez a példa feltételezi, hogy az értékeket csak egyszer kell beállítania a termék létrehozásakor, és hogy a terméknek két releváns címkéje van: color:red és color:orange.
Példa Liquid-kód egysoros szöveges mező listájának beállítására.
Létre szeretne hozni egy munkafolyamatot, amely e-mailt küld egy alkalmazottnak, ha egy vásárló több mint 500 USD-t költ egy rendelésre. Létrehoz egy munkafolyamatot a Rendelés létrehozva kiváltóval, beállít egy feltételt, amely akkor igaz, ha a rendelés végösszege meghaladja az 500 USD-t, és használja a Belső e-mail küldése műveletet. A Belső e-mail küldése művelet Üzenet szakaszában a következő változókat használja.
Példa a változók használatára a vásárlói adatok megadásához.
Bemenet
Kimenet
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 }}.
Kérjük, küldjön személyes köszönőlevelet Jeanne Dupontnak (jeanne@example.com) a 763,42 USD értékű rendeléséért.
Dinamikus e-mail-üzenet írása egy alacsony készletű termékhez
Úgy dönt, hogy értesítenie kell a személyzet egyik tagját, ha egy termék készlete alacsony, és utánrendelést kell leadni. Létrehoz egy munkafolyamatot, amely az Készletmennyiség megváltozott kiváltóval indul, és beállít egy feltételt, amely akkor igaz, ha a korábbi készletmennyiség legfeljebb 10. A Belső e-mail küldése művelet Üzenet szakaszában a következő változókat használja.
Példa a változók használatára a tételadatok megadásához.
Bemenet
Kimenet
Please reorder {{ product.title }}. Email owner@store.com to verify that they've received the purchase order.
Kérjük, rendelje újra a High Waist Leggings – Black terméket. Írjon e-mailt a owner@example.com címre, hogy ellenőrizze, megkapták-e a beszerzési megrendelést.
Dinamikus e-mail-üzenet írása a személyzet értesítésére egy csalásgyanús rendelésről
Szeretné lemondani a magas kockázati szintű rendeléseket, de inkább azt szeretné, ha a személyzet manuálisan mondaná le a rendelést. Létrehoz egy munkafolyamatot, amely a Rendelés létrehozva kiváltóval indul, és beállít egy feltételt, amely akkor igaz, ha a rendelés kockázati szintje magas. A Belső e-mail küldése művelet Üzenet szakaszában a következő változókat használja.
Példa a változók használatára egy csalásgyanús rendelésről szóló információk megadásához.
Bemenet
Kimenet
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!
Shopify-üzletünk magas csalási kockázatú rendelést kapott. Szeretnénk azonnal törölni ezt a rendelést, még mielőtt a gyártásba kerülne:
#1001
Dupont, Jeanne
jeanne@example.com
Kérjük, erősítse meg az új rendelési állapotot. Köszönjük!
Rendelés sorelemeinek kiírása for ciklussal
Rendelés beérkezésekor hasznos lehet egy olyan üzenetet küldeni, amely tartalmazza a megrendelt termékeket. Ezt egy for ciklus használatával teheti meg, amely ismételten végrehajt egy kódblokkot. A változókat támogató szövegmezők a for ciklusokat és a forloop objektumot is támogatják.
Tegyük fel például, hogy létre szeretne hozni egy munkafolyamatot, amely egy rendelés összes cikkszámának és mennyiségének listáját adja vissza. A Belső e-mail küldése művelet Üzenet szakaszában használja a következő változókat.
Példa a „for” ciklus használatára a rendelési adatok szolgáltatásához.
Bemenet
Kimenet
Order summary:
{% for a in order.lineItems %}
{{a.sku}} ( {{a.quantity}} )
{% endfor %}
A rendelés sorelemeinek megjelenítése egy „for” ciklus és további információk használatával
Úgy dönt, hogy további információkat ad hozzá az e-mailhez, beleértve a termék nevét, a cikkszámokat, a tételenkénti árat és a vásárló szállítási adatait. A Belső e-mail küldése művelet Üzenet szakaszában használja a következő változókat.
Példa a „for” ciklus használatára részletesebb rendelési adatok szolgáltatásához.
Bemenet
Kimenet
Order summary:
{% for a in order.lineItems %}
Product: {{a.title}}
SKU: {{a.sku}}
Price (per unit): ${{a.originalUnitPriceSet.shopMoney.amount}}
Quantity: {{a.quantity}}
{% endfor %}
Rendelés összesítője:
Termék: Magas derekú leggings – fekete
SKU: 8987097979
Ár (egységenként): 8,49 USD
Mennyiség: 5
Termék: Sportzokni – kék
SKU: 888998898B
Ár (egységenként): 5,61 USD
Mennyiség: 2
Néhány sorelem megjelenítése egy „for” ciklus és egy „if” utasítás kombinálásával
Ha egy adott szállító által biztosított, eladott tételeket szeretne nyomon követni, akkor a Belső e-mail küldése művelet Üzenet szakaszában használja a következő változókat, és foglaljon bele egy if utasítást a for ciklusba.
Példa a „for” ciklus és az „if” utasítás használatára meghatározott szállítók rendelési adatainak szolgáltatásához.
Bemenet
Kimenet
Acme product sold:
{% for x in order.lineItems %}
{% if x.vendor == 'acme-vendor' %}
Product name: {{x.title}}
SKU: {{x.sku}}
{% endif %}
{% endfor %}
Acme termék eladva:
Terméknév: Magas derekú leggings – fekete
SKU: 8987097979
Összetett adatobjektumok a Shopify Flow rendszerben
A Flow szinte minden, a GraphQL Admin API-ban elérhető adathoz hozzáférést biztosít. Ide tartoznak az összetett adatobjektumok is, például a listák és az objektumok. Ezen objektumok használatának azonban vannak korlátai. Ez a szakasz ezeket a korlátozásokat ismerteti, és példákat mutat be a használatukra.
A listák és objektumok közvetlen meghívása helyett fusson végig a listán egy ciklusban, és csak a kívánt mezőket vegye bele.
Például a {{ order.lineItems }} közvetlen meghívása helyett használja a következő formátumot az egyes mezők meghívásához. Ezek a példák tartalmazzák az összes olyan mezőt, amely a lista vagy az objektum közvetlen meghívása esetén szerepelne. Másolja ki és illessze be a szükséges mezőket.
Szöveg
{% for li in order.lineItems %}
{% comment %}li.contract - omitted{% endcomment %}