Upotreba varijabli Liquid u aplikaciji Shopify Flow
Varijable Liquid su rezervirana mjesta definirana u jeziku Liquid koja se zamjenjuju vrijednostima iz GraphQL Admin API-ja kada se tijek rada pokrene. Varijable mogu opisivati atribute korisnika, narudžbi i proizvoda uključenih u vaše tijekove rada, kao što su broj narudžbe, cijena narudžbe ili ime korisnika. Varijable se mogu upotrebljavati u uvjetima za upravljanje logikom u vašem tijeku rada ili za izlaz podataka iz radnje.
Dodavanje varijabli u tijekove rada pomoću Liquida
Varijable možete dodati pomoću Liquida u svako tekstualno polje koje sadrži poveznicu Dodaj varijablu. Kliknite na poveznicu Dodaj varijablu ispod odgovarajućeg polja te zatim odaberite varijablu s popisa.
Varijable na popisu Dodaj varijablu filtrirane su tako da upotrebljavate samo one varijable koje vraćaju koraci prije trenutačnog koraka, poput pokretača. Na primjer, pokretač Narudžba izrađena pruža resurse narudžbe i trgovine iz Admin API-ja koji se mogu umetnuti kao varijable. Nakon što s popisa odaberete varijablu, ona se dodaje u tekstualni okvir kao ispravno oblikovani Liquid.
Liquid možete upisivati i izravno u tekstualno polje. Na primjer, možete upotrijebiti varijablu {{ order.name }} kako biste prikazali niz narudžbe iz administratorskog alata za Shopify, na primjer order-123.
Budući da Flow upotrebljava Admin API kako bi pronašao podatke koji se koriste za Liquid, sintaksa varijable upotrebljava oblikovanje camel case (devina grba). Varijable oblikovane kao camel case imaju prvu riječ koja počinje malim slovom, a svaka sljedeća riječ počinje velikim slovom, kao što su firstName ili canMarkAsPaid. Na primjer, za pristup datumu kada je proizvod izrađen, unesite {{ product.createdAt }}. Ako u temi za Shopify upotrebljavate sintaksu Liquid, koja ne rabi oblikovanje camel case, onda trebate unijeti {{ product.created_at }}.
Uvjetne i iteracijske oznake Liquid
Oznake Liquid mogu se upotrebljavati uz varijable za sljedeće funkcije:
Pisanje uvjetnih izraza, kao što je utvrđivanje je li ukupni iznos narudžbe veći od 100 USD.
Iteraciju kroz popis objekata, poput ispisa podataka za svaku liniju artikla u narudžbi.
Možete upotrijebiti oznake Liquid kako biste napisali ove izraze i iterirali kroz objekte.
Na primjer, sljedeći kod u jeziku Liquid prikazuje broj narudžbe ako je ukupni iznos narudžbe veći od 100 USD:
{% if order.totalPriceSet.shopMoney.amount > 100 %}
Order number: {{ order.name }}
{% endif %}
Možete se koristiti i petljom for za iteraciju kroz popis objekata, poput linija artikala u narudžbi. Na primjer, sljedeći kod u jeziku Liquid prikazuje naziv svake linije artikla u narudžbi:
{% for li in order.lineItems %}
{{ li.title }}
{% endfor %}
Flow podržava sljedeće uvjetne oznake (ili oznake za kontrolu toka) jezika Liquid:
Podatke o varijablama u jeziku Liquid možete transformirati pomoću filtara. Flow podržava sve filtre Liquid otvorenog koda.
Na primjer, sljedeći kod u jeziku Liquid uklanja prefiks iz naziva narudžbe i ispisuje ono što ostaje: {{ order.name | remove: "Order-" }}
Na što trebate obratiti pažnju pri upotrebi varijabli Liquid u filtrima
Prije transformacije varijabli pomoću filtara proučite sljedeće:
Flow ne podržava točkastu notaciju koja je dostupna za neke filtre. Na primjer, Flow podržava {{ order.lineItems | size }}, ali ne i {{ order.lineItems.size }}.
Flow ne podržava točkastu notaciju za metapolja. Na primjer, ne možete upotrebljavati {{ order.metafields.custom.hold_note }}. Umjesto toga morate proći kroz metapolja kao što je opisano u primjerima.
Flow ne podržava upotrebu indeksa za pristup stavkama na popisu. Na primjer, ne možete upotrebljavati {{ order.lineItems[0].title }}. Umjesto toga morate proći kroz linije artikla kao što je opisano u primjerima.
Filtri za datume
Uz standardne filtre Liquid, Flow nudi filtre za datume za dobivanje datuma u odnosu na drugi datum radi podrške pokretaču Zakazano vrijeme i značajkama Dohvati podatke. Ti su filtri: date_minus i date_plus. Na primjer:
Za vraćanje datuma jedan dan u budućnosti: {{ "now" | date_plus: "1 day" }}
Za vraćanje datuma jedan dan u prošlosti: {{ "now" | date_minus: "1 day" }}
Ti filtri prihvaćaju second, minute, day, week, month i year kao jedinice trajanja, i u jednini (npr. second) i u množini (npr. seconds). Možete unijeti i sljedeće vrste prilagodljivih jedinica:
Cijeli broj koji predstavlja broj sekundi: {{ "now" | date_minus: 3600 }}, pri čemu je 3600 ekvivalentno 1 satu.
Niz trajanja ISO8601: {{ "now" | date_minus: "P1Y2D" }}, pri čemu P1Y2D znači 1 godina i 2 dana.
Za opće svrhe raspršivanja i nove implementacije trebali biste upotrebljavati blake3 jer pruža veću učinkovitost i sigurnost u usporedbi sa starijim algoritmima. Međutim, sha256, sha1 i md5 dostupni su radi kompatibilnosti sa sustavima trećih strana.
Primjer upotrebe:
{{ "hello world" | blake3 }} vraća BLAKE3 hash niza "hello world".
Filtri HMAC
Za izradu HMAC-a s pomoću tajnog ključa upotrijebite jedan od sljedećih podržanih filtara:
Želite ispisati URL-ove za korisnika, narudžbu i proizvod koji su uključeni u tijek rada.
# 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>
Konvertiranje popisa oznaka u metapolje
Želite konvertirati skup oznaka u metapolje koje je popis tekstualnih polja u jednom redu. Izradite tijek rada upotrebom pokretača Proizvod dodan u trgovinu i upotrijebite radnju Ažuriraj metapolje proizvoda. U odjeljak Vrijednost radnje Ažuriraj metapolje proizvoda dodajete sljedeći kod Liquid. Ovaj primjer pretpostavlja da vrijednosti morate postaviti samo jednom, pri izradi proizvoda, te da proizvod ima dvije relevantne oznake: color:red i color:orange.
Primjer koda Liquid za postavljanje popisa tekstualnog polja u jednom redu.
Želite izraditi tijek rada za slanje e-poruke zaposleniku kada korisnik potroši više od 500 $ na narudžbu. Izrađujete tijek rada upotrebom pokretača Narudžba izrađena, postavljate uvjet koji je istinit ako je ukupni iznos narudžbe veći od 500 $ i upotrebljavate radnju Pošalji internu e-poruku. U odjeljku Poruka unutar radnje Pošalji internu e-poruku upotrebljavate sljedeće varijable.
Primjer upotrebe varijable za navođenje pojedinosti o korisniku.
Unos
Izlaz
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šaljite osobnu zahvalu korisnici Jeanne Dupont (jeanne@example.com) za poslanu narudžbu u iznosu od 763,42 $.
Napišite dinamičnu poruku e-pošte za proizvod čije su zalihe pri kraju
Odlučujete da trebate obavijestiti člana osoblja kada se zalihe proizvoda smanje i kada je potrebno naručiti dodatne zalihe. Izrađujete tijek rada koji započinje pokretačem Promijenjena količina zaliha i postavljate uvjet koji je ispunjen ako je prethodna količina zaliha manja ili jednaka 10. U odjeljku Poruka za radnju Pošalji internu e-poštu upotrebljavate sljedeće varijable.
Primjer upotrebe varijable za pružanje pojedinosti o stavci.
Unos
Izlaz
Please reorder {{ product.title }}. Email owner@store.com to verify that they've received the purchase order.
Ponovno naručite proizvod High Waist Leggings – Black. Pošaljite poruku e-pošte na adresu owner@example.com kako biste provjerili jesu li primili narudžbenicu.
Napišite dinamičnu poruku e-pošte za obavještavanje osoblja o lažnoj narudžbi
Želite otkazati narudžbe s visokom razinom rizika, ali preferirate da osoblje ručno otkaže narudžbu. Izrađujete tijek rada koji započinje pokretačem Izrađena narudžba i postavljate uvjet koji je ispunjen ako je razina rizika narudžbe visoka. U odjeljku Poruka za radnju Pošalji internu e-poštu upotrebljavate sljedeće varijable.
Primjer upotrebe varijable za pružanje informacija o lažnoj narudžbi.
Unos
Izlaz
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!
Naša trgovina Shopify primila je narudžbu s visokim rizikom od prijevare. Željeli bismo odmah otkazati tu narudžbu, prije nego što se pošalje u proizvodnju:
#1001
Dupont, Jeanne
jeanne@example.com
Potvrdite novi status narudžbe. Hvala!
Prikažite linije artikala za narudžbu pomoću petlje for
Kada primite narudžbu, može biti korisno poslati poruku koja sadrži naručene proizvode. To možete učiniti pomoću petlje for loop koja opetovano izvršava blok koda. Tekstna polja koja podržavaju varijable podržavaju i petlje for i objekt forloop.
Na primjer, želite izraditi tijek rada koji vraća popis svih SKU-ova i količina u narudžbi. U odjeljku Poruka za radnju Pošalji internu e-poštu upotrebljavate sljedeće varijable.
Primjer upotrebe petlje for za pružanje informacija o narudžbi.
Unos
Izlaz
Order summary:
{% for a in order.lineItems %}
{{a.sku}} ( {{a.quantity}} )
{% endfor %}
Prikažite linije artikala za narudžbu pomoću petlje for s dodatnim informacijama
Odlučujete dodati više informacija u poruku e-pošte, uključujući naziv proizvoda, SKU-ove, cijenu po stavci i informacije o dostavi za korisnika. U odjeljku Poruka za radnju Pošalji internu e-poštu upotrebljavate sljedeće varijable.
Primjer upotrebe petlje for za pružanje opsežnijih informacija o narudžbi.
Unos
Izlaz
Order summary:
{% for a in order.lineItems %}
Product: {{a.title}}
SKU: {{a.sku}}
Price (per unit): ${{a.originalUnitPriceSet.shopMoney.amount}}
Quantity: {{a.quantity}}
{% endfor %}
Sažetak narudžbe:
Proizvod: High Waist Leggings - Black
SKU: 8987097979
Cijena (po jedinici): 8,49 $
Količina: 5
Proizvod: Athletic Socks - Blue
SKU: 888998898B
Cijena (po jedinici): 5,61 $
Količina: 2
Prikažite neke linije artikala kombiniranjem petlje for s izjavom if
Morate pratiti prodane stavke koje isporučuje određeni prodavatelj. U odjeljku Poruka za radnju Pošalji internu e-poštu upotrebljavate sljedeće varijable i uključujete izjavu if u petlju for loop.
Primjer upotrebe petlje for i izjave if za pružanje informacija o narudžbi za određene prodavatelje.
Unos
Izlaz
Acme product sold:
{% for x in order.lineItems %}
{% if x.vendor == 'acme-vendor' %}
Product name: {{x.title}}
SKU: {{x.sku}}
{% endif %}
{% endfor %}
Prodan proizvod Acme:
Naziv proizvoda: High Waist Leggings - Black
SKU: 8987097979
Složeni podatkovni objekti u aplikaciji Shopify Flow
Aplikacija Flow omogućuje vam pristup gotovo svim podacima koji se nalaze u sučelju GraphQL Admin API. To uključuje složene podatkovne objekte, kao što su popisi i objekti. Međutim, postoje određena ograničenja onoga što možete učiniti s tim objektima. U ovom se odjeljku navode ta ograničenja i pružaju primjeri rada s njima.
Umjesto izravnog pozivanja popisa i objekata, trebali biste proći kroz popis i uključiti samo ona polja koja želite.
Na primjer, umjesto izravnog pozivanja varijable {{ order.lineItems }}, upotrijebite sljedeći format za pozivanje određenih polja. Ovi primjeri uključuju sva polja koja bi bila uključena izravnim pozivanjem popisa ili objekta. Kopirajte i zalijepite polja koja su vam potrebna.
Tekst
{% for li in order.lineItems %}
{% comment %}li.contract - omitted{% endcomment %}