Korišćenje Liquid promenljivih u aplikaciji Shopify Flow
Liquid promenljive su čuvari mesta definisani u Liquid-u koji se zamenjuju vrednostima iz API-ja GraphQL Admin API prilikom izvršavanja toka posla. Promenljive mogu da opišu atribute kupaca, porudžbina i proizvoda koji su uključeni u vaše tokove posla, kao što su broj porudžbine, cena porudžbine ili ime kupca. Promenljive se mogu koristiti u uslovima za kontrolu logike u vašem toku posla, ili za izlaz podataka iz radnje.
Dodavanje promenljivih u tokove posla pomoću jezika Liquid
Možete da dodate promenljive koristeći Liquid u svako tekstualno polje koje sadrži link Dodaj promenljivu. Kliknite na link Dodaj promenljivu ispod odgovarajućeg polja i izaberite promenljivu iz liste.
Promenljive u listi Dodaj promenljivu se filtriraju kako biste koristili samo one promenljive koje vraćaju koraci pre trenutnog koraka, kao što su okidači. Na primer, okidač Porudžbina je kreirana pruža resurse porudžbine i prodavnice iz rešenja Admin API koje možete da umetnete kao promenljive. Nakon što izaberete promenljivu sa liste, ona se dodaje u okvir za tekst kao ispravno formatiran Liquid kôd.
Možete takođe direktno da napišete Liquid u tekstualno polje. Na primer, možete da koristite promenljivu {{ order.name }} da prikažete string porudžbine iz Shopify admina, kao što je order-123.
S obzirom na to da Flow koristi Admin API da preuzme podatke koji se koriste za Liquid, sintaksa promenljive koristi pravilo pisanja camel case. Promenljive u obliku camel case imaju prvu reč koja počinje malim slovom, a svaka naredna počinje velikim slovom, kao što su firstName ili canMarkAsPaid. Na primer, da biste pristupili datumu kreiranja proizvoda, unesite {{ product.createdAt }}. Ako Liquid sintaksu koristite u Shopify temi, koja ne koristi camel case oblik, onda biste uneli {{ product.created_at }}.
Uslovne i iterativne Liquid oznake
Liquid oznake mogu da se koriste sa promenljivima za izvršavanje sledećih funkcija:
Pisanje uslovnih iskaza, kao što je utvrđivanje da li je ukupni iznos porudžbine veći od 100 USD.
Iteracija kroz listu objekata, kao što je izlaz podataka za svaku stavku u porudžbini.
Možete da koristite Liquid oznake da napišete te iskaze i vršite iteracije kroz objekte.
Na primer, sledeći Liquid prikazuje broj porudžbine ako je ukupan iznos porudžbine veći od 100 USD:
{% if order.totalPriceSet.shopMoney.amount > 100 %}
Order number: {{ order.name }}
{% endif %}
Možete takođe da koristite petlju „for” za iteraciju kroz listu objekata, kao što su stavke za porudžbinu. Na primer, sledeći Liquid prikazuje ime svake stavke u porudžbini:
{% for li in order.lineItems %}
{{ li.title }}
{% endfor %}
Podatke o promenljivima možete da transformišete u rešenju Liquid koristeći filtere. Flow podržava sve Liquid filtere otvorenog koda.
Na primer, sledeći Liquid uklanja prefiks sa naziva porudžbine i daje izlaz onog što ostane: {{ order.name | remove: "Order-" }}
Razmatranja za korišćenje Liquid promenljivih u filterima
Pre nego što transformišete promenljive koristeći filtere, pregledajte sledeća razmatranja:
Flow ne podržava tačka-notaciju koja je dostupna za neke filtere. Na primer, Flow podržava {{ order.lineItems | size }}, ali ne podržava {{ order.lineItems.size }}.
Flow ne podržava tačka-notaciju za metapolja. Na primer, ne možete da koristite {{ order.metafields.custom.hold_note }}. Umesto toga, morate da prođete petljom kroz metapolja kao što je naznačeno u primerima.
Flow ne podržava korišćenje indeksa za pristupanje stavkama u listi. Na primer, ne možete da koristite {{ order.lineItems[0].title }}. Umesto toga, morate da prođete petljom kroz stavke kao što je naznačeno u primerima.
Filteri datuma
Uz standardne Liquid filtere, Flow pruža i filtere datuma za dobijanje datuma u odnosu na drugi datum, da bi podržao funkcije okidača Planirano vreme i Preuzmi podatke. Ovi filteri su: date_minus i date_plus. Na primer:
Za vraćanje datuma koji je jedan dan u budućnosti: {{ "now" | date_plus: "1 day" }}
Za vraćanje datuma koji je jedan dan u prošlosti: {{ "now" | date_minus: "1 day" }}
Ovi filteri prihvataju second, minute, day, week, month, i year kao jedinicu trajanja, i u jednini (kao što je second) i u množini (kao što je seconds). Možete da navedete i sledeće tipove prilagodljivih jedinica:
Ceo broj koji predstavlja broj sekundi: {{ "now" | date_minus: 3600 }}, gde je 3600 ekvivalentno 1 satu.
String trajanja ISO8601: {{ "now" | date_minus: "P1Y2D" }}, gde P1Y2D znači 1 godina i 2 dana.
Kriptografski filteri
Flow obezbeđuje kriptografske filtere za heširanje i kreiranje kôdova za autentifikaciju poruka zasnovanih na hešu (HMAC). Ovi filteri su korisni za kreiranje jedinstvenih identifikatora, kontrolnih zbirova ili integraciju sa sistemima trećih strana kojima su potrebni određeni heš formati.
Filteri za heširanje
Shopify Flow podržava sledeće tipove filtera za heširanje:
blake3 – Kreira BLAKE3 heš (preporučuje se za opštu upotrebu).
Za opšte svrhe hešovanja i nove implementacije trebalo bi da koristite blake3, jer nudi bolje performanse i bezbednost u poređenju sa starijim algoritmima. Međutim, sha256, sha1 i md5 su dostupni zbog kompatibilnosti sa sistemima trećih strana.
Primer korišćenja:
{{ "hello world" | blake3 }} vraća BLAKE3 heš za „hello world“.
HMAC filteri
Da biste kreirali HMAC sa tajnim ključem, koristite jedan od sledećih podržanih filtera:
Želite da prikažete URL-ove za kupca, porudžbinu i proizvod koji su obuhvaćeni tokom posla.
# 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>
Konvertovanje liste oznaka u metapolje
Želite da konvertujete skup oznaka u metapolje koje je lista tekstualnih polja u jednom redu. Kreirate tok posla koristeći okidač Proizvod dodat u prodavnicu i koristite radnju Ažuriraj metapolje proizvoda. U odeljak Vrednost u radnji Ažuriraj metapolje proizvoda dodajete sledeći Liquid kôd. Ovaj primer pretpostavlja da vrednosti treba da podesite samo jednom kada se proizvod kreira, a da proizvod ima dve relevantne oznake: color:red i color:orange.
Primer Liquid koda za podešavanje liste tekstualnog polja u jednom redu.
Želite da kreirate tok posla kako biste poslali imejl zaposlenom kada kupac potroši više od 500 $ za porudžbinu. Kreirate tok posla koristeći okidač Porudžbina je kreirana, podešavate uslov koji je ispunjen ako je ukupan iznos porudžbine iznad 500 $ i koristite radnju Pošalji interni imejl. U odeljku Poruka radnje Pošalji interni imejl koristite sledeće promenljive.
Primer korišćenja promenljive za pružanje detalja o kupcu.
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 ličnu poruku zahvalnosti kupcu Jeanne Dupont (jeanne@example.com) za porudžbinu u iznosu od 763,42 $.
Pisanje dinamičke imejl poruke za proizvod koji ima malo zaliha
Odlučili ste da treba da obavestite člana osoblja kada su zalihe proizvoda pri kraju i kada treba naručiti nove zalihe. Kreirate tok posla koji počinje okidačem Količina zaliha je promenjena i podešavate uslov koji je ispunjen ako je prethodna količina zaliha manja ili jednaka 10. U odeljku Poruka radnje Pošalji interni imejl koristite sledeće promenljive.
Primer korišćenja promenljive za pružanje detalja o stavkama.
Unos
Izlaz
Please reorder {{ product.title }}. Email owner@store.com to verify that they've received the purchase order.
Ponovo naručite proizvod High Waist Leggings - Black. Pošaljite imejl na owner@example.com da biste potvrdili da su primili narudžbenicu.
Pisanje dinamičke imejl poruke za obaveštavanje osoblja o lažnoj porudžbini
Želite da otkažete porudžbine koje imaju visok nivo rizika, ali više volite da osoblje ručno otkaže porudžbinu. Kreirate tok posla koji počinje okidačem Porudžbina je kreirana i podešavate uslov koji je ispunjen ako je nivo rizika porudžbine visok. U odeljku Poruka u radnji Pošalji interni imejl koristite sledeće promenljive.
Primer korišćenja promenljive za pružanje informacija o lažnoj porudžbini.
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 Shopify prodavnica je primila porudžbinu sa visokim rizikom od prevare. Želimo da otkažemo ovu porudžbinu odmah, pre nego što bude poslata u proizvodnju:
#1001
Dupont, Jeanne
jeanne@example.com
Potvrdite novi status porudžbine. Hvala!
Prikazivanje stavki za porudžbinu koristeći petlju „for“
Kada se primi porudžbina, može biti korisno da pošaljete poruku koja sadrži naručene proizvode. To možete da uradite koristeći petlju „for“, koja više puta izvršava blok koda. Tekstualna polja koja podržavaju promenljive takođe podržavaju petlje „for“ i objekat forloop.
Na primer, želite da kreirate tok posla koji vraća listu svih SKU-ova i količina u porudžbini. U odeljku Poruka radnje Pošalji interni imejl koristite sledeće promenljive.
Primer korišćenja petlje „for“ za pružanje informacija o porudžbini.
Unos
Izlaz
Order summary:
{% for a in order.lineItems %}
{{a.sku}} ( {{a.quantity}} )
{% endfor %}
Prikazivanje stavki za porudžbinu koristeći petlju „for“ uz dodatne informacije
Odlučili ste da dodate više informacija u imejl, uključujući ime proizvoda, SKU-ove, cenu po stavci i informacije o isporuci za kupca. U odeljku Poruka radnje Pošalji interni imejl koristite sledeće promenljive.
Primer korišćenja for petlje za pružanje detaljnijih informacija o porudžbini.
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 %}
Pregled porudžbine:
Proizvod: High Waist Leggings - Black
SKU: 8987097979
Cena (po jedinici): 8,49 $
Količina: 5
Proizvod: Athletic Socks - Blue
SKU: 888998898B
Cena (po jedinici): 5,61 $
Količina: 2
Prikaz određenih stavki kombinovanjem for petlje i if iskaza
Morate da pratite prodate stavke koje obezbeđuje određeni dobavljač. U odeljku Poruka radnje Slanje internog imejla, koristite sledeće promenljive i uključite iskaz if u for loop petlju.
Primer korišćenja for petlje i if iskaza za pružanje informacija o porudžbini za određene dobavljače.
Unos
Izlaz
Acme product sold:
{% for x in order.lineItems %}
{% if x.vendor == 'acme-vendor' %}
Product name: {{x.title}}
SKU: {{x.sku}}
{% endif %}
{% endfor %}
Prodat Acme proizvod:
Naziv proizvoda: High Waist Leggings - Black
SKU: 8987097979
Složeni objekti podataka u aplikaciji Shopify Flow
Flow vam omogućava pristup skoro svim podacima koji se nalaze u API-ju GraphQL Admin API. Ovo uključuje složene objekte podataka, kao što su liste i objekti. Međutim, postoje određena ograničenja u vezi sa tim šta možete raditi sa ovim objektima. U ovom odeljku su navedena ta ograničenja i dati su primeri kako da radite sa njima.
Umesto direktnog pozivanja listi i objekata, trebalo bi da iterirate kroz listu i uključite samo polja koja su vam potrebna.
Na primer, umesto direktnog pozivanja {{ order.lineItems }}, koristite sledeći format za pozivanje određenih polja. Ovi primeri uključuju sva polja koja bi bila obuhvaćena direktnim pozivanjem liste ili objekta. Kopirajte i nalepite polja koja su vam potrebna.
Tekst
{% for li in order.lineItems %}
{% comment %}li.contract - omitted{% endcomment %}