Variabilele Liquid sunt substituenți definiți în Liquid care sunt înlocuiți cu valorile din GraphQL Admin API la execuția unui flux de lucru. Variabilele pot descrie atributele clienților, comenzilor și produselor care sunt implicate în fluxurile dumneavoastră de lucru, cum ar fi numărul comenzii, prețul comenzii sau numele clientului. Variabilele pot fi folosite în condiții pentru a controla logica din fluxul dumneavoastră de lucru sau pentru a extrage date dintr-o acțiune.
Adăugarea variabilelor în fluxurile de lucru folosind Liquid
Puteți adăuga variabile folosind Liquid în orice câmp text care conține linkul Adăugați o variabilă. Faceți clic pe linkul Adăugați o variabilă de sub câmpul relevant, apoi alegeți o variabilă din listă.
Variabilele din lista Adăugați o variabilă sunt filtrate, astfel încât să utilizați numai variabilele returnate de pașii anteriori pasului curent, cum ar fi declanșatorii. De exemplu, declanșatorul Comandă creată oferă resurse de comandă și de magazin de la Admin API care pot fi inserate ca variabile. După ce alegeți o variabilă din listă, aceasta este adăugată în caseta de text ca Liquid formatat corespunzător.
De asemenea, puteți scrie Liquid direct în câmpul text. De exemplu, puteți utiliza variabila {{ order.name }} pentru a afișa șirul comenzii din panoul de administrare Shopify, cum ar fi order-123.
Deoarece Flow utilizează Admin API pentru a recupera datele folosite pentru Liquid, sintaxa variabilelor utilizează camel case. Variabilele camel case au primul cuvânt care începe cu o literă mică, iar cuvintele ulterioare încep cu o literă mare, cum ar fi firstName sau canMarkAsPaid. De exemplu, pentru a accesa data la care a fost creat un produs, introduceți {{ product.createdAt }}. Dacă utilizați sintaxa Liquid într-o temă Shopify, care nu utilizează camel case, atunci ar trebui să introduceți {{ product.created_at }}.
Etichete Liquid condiționale și de iterație
Etichetele Liquid pot fi utilizate cu variabile pentru a îndeplini următoarele funcții:
Scrierea de instrucțiuni condiționale, cum ar fi determinarea dacă totalul unei comenzi este mai mare de 100 USD.
Iterarea printr-o listă de obiecte, cum ar fi extragerea de date pentru fiecare rând dintr-o comandă.
Puteți utiliza etichete Liquid pentru a scrie aceste instrucțiuni și a itera prin obiecte.
De exemplu, următorul cod Liquid afișează numărul comenzii dacă totalul comenzii este mai mare de 100 USD:
{% if order.totalPriceSet.shopMoney.amount > 100 %}
Order number: {{ order.name }}
{% endif %}
De asemenea, puteți utiliza o buclă for pentru a itera printr-o listă de obiecte, cum ar fi rândurile pentru o comandă. De exemplu, următorul cod Liquid afișează numele fiecărui rând dintr-o comandă:
{% for li in order.lineItems %}
{{ li.title }}
{% endfor %}
Flow acceptă următoarele etichete Liquid condiționale (sau de control al fluxului):
Puteți transforma datele variabilelor în Liquid utilizând filtre. Flow acceptă toate filtrele Liquid open-source.
De exemplu, următorul cod Liquid elimină un prefix din numele unei comenzi și afișează ceea ce rămâne: {{ order.name | remove: "Order-" }}
Considerații privind utilizarea variabilelor Liquid în filtre
Înainte de a transforma variabilele folosind filtre, examinați următoarele considerații:
Flow nu acceptă notația cu punct, care este disponibilă pentru unele filtre. De exemplu, Flow acceptă {{ order.lineItems | size }}, dar nu și {{ order.lineItems.size }}.
Flow nu acceptă notația cu punct pentru metacâmpuri. De exemplu, nu puteți utiliza {{ order.metafields.custom.hold_note }}. În schimb, trebuie să iterați prin metacâmpuri, așa cum este prezentat în exemple.
Flow nu acceptă utilizarea de indexuri pentru a accesa articole dintr-o listă. De exemplu, nu puteți utiliza {{ order.lineItems[0].title }}. În schimb, trebuie să iterați prin rânduri, așa cum este prezentat în exemple.
Filtre de dată
Pe lângă filtrele Liquid standard, Flow oferă filtre de dată pentru a obține o dată relativă la o altă dată pentru a accepta funcționalitățile declanșatorului Oră programată și Obținere date. Aceste filtre sunt: date_minus și date_plus. De exemplu:
Pentru a returna o dată cu o zi în viitor: {{ "now" | date_plus: "1 day" }}
Pentru a returna o dată cu o zi în trecut: {{ "now" | date_minus: "1 day" }}
Aceste filtre acceptă second, minute, day, week, month și year ca unitate de durată, atât la singular (cum ar fi second), cât și la plural (cum ar fi seconds). De asemenea, puteți furniza următoarele tipuri de unități personalizabile:
Un număr întreg care reprezintă numărul de secunde: {{ "now" | date_minus: 3600 }}, unde 3600 este echivalent cu 1 oră.
Un șir de durată ISO8601: {{ "now" | date_minus: "P1Y2D" }}, unde P1Y2D înseamnă 1 an și 2 zile.
Filtre criptografice
Flow oferă filtre criptografice pentru hasing și crearea de coduri de autentificare a mesajelor bazate pe hash (HMAC). Aceste filtre sunt utile pentru crearea de identificatori unici, sume de control sau integrarea cu sisteme externe care necesită formate de hash specifice.
Filtre de hasing
Shopify Flow acceptă următoarele tipuri de filtre de hasing:
blake3 - Creează un hash BLAKE3 (recomandat pentru uz general).
Pentru scopuri generale de hasing și implementări noi, ar trebui să utilizați blake3, deoarece oferă performanțe și securitate superioare în comparație cu algoritmii mai vechi. Cu toate acestea, sha256, sha1 și md5 sunt disponibile pentru compatibilitate cu sisteme externe.
Exemplu de utilizare:
{{ „hello world” | blake3 }} returnează hash-ul BLAKE3 al textului „hello world”.
Filtre HMAC
Pentru a crea un HMAC cu o cheie secretă, utilizați unul dintre următoarele filtre acceptate:
Doriți să afișați URL-urile pentru clientul, comanda și produsul care sunt implicate într-un flux de lucru.
# 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>
Conversia unei liste de etichete într-un metacâmp
Doriți să convertiți un set de etichete într-un metacâmp care este o listă de câmpuri text pe un singur rând. Creați un flux de lucru folosind declanșatorul Produs adăugat în magazin și utilizați acțiunea Actualizare metacâmp produs. În secțiunea Valoare a acțiunii Actualizare metacâmp produs, adăugați următorul cod Liquid. Acest exemplu presupune că trebuie să setați valorile o singură dată la crearea produsului și că produsul are două etichete relevante: color:red și color:orange.
Exemplu de cod Liquid pentru a seta lista unui câmp text pe un singur rând.
Scrierea unui mesaj de e-mail dinamic pentru o comandă
Doriți să creați un flux de lucru pentru a trimite un e-mail unui angajat atunci când un client cheltuiește mai mult de 500 USD pe o comandă. Creați un flux de lucru folosind declanșatorul Comandă creată, setați o condiție care este adevărată dacă totalul comenzii este peste 500 USD și utilizați acțiunea Trimitere e-mail intern. În secțiunea Mesaj a acțiunii Trimitere e-mail intern, utilizați următoarele variabile.
Exemplu de utilizare a variabilelor pentru a furniza detalii despre client.
Intrare
Ieșire
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 }}.
Vă rugăm să trimiteți o notă de mulțumire personală către Jeanne Dupont (jeanne@example.com) pentru plasarea unei comenzi în valoare de 763,42 USD.
Scrierea unui mesaj de e-mail dinamic pentru un produs cu stoc redus
Decideți că trebuie să informați un membru al personalului atunci când inventarul unui produs scade și trebuie plasată o comandă pentru mai mult stoc. Creați un flux de lucru care începe cu declanșatorul Cantitatea din inventar modificată și setați o condiție care este adevărată dacă cantitatea anterioară din inventar este mai mică sau egală cu 10. În secțiunea Mesaj a acțiunii Trimitere e-mail intern, utilizați următoarele variabile.
Exemplu de utilizare a variabilelor pentru a furniza detalii despre articol.
Intrare
Ieșire
Please reorder {{ product.title }}. Email owner@store.com to verify that they've received the purchase order.
Vă rugăm să recomandați Colanți cu talie înaltă - Negru. Trimiteți un e-mail la owner@example.com pentru a verifica dacă au primit comanda de achiziție.
Scrierea unui mesaj de e-mail dinamic pentru a notifica personalul despre o comandă frauduloasă
Doriți să anulați comenzile care au un nivel de risc ridicat, dar preferați ca personalul dvs. să anuleze manual comanda. Creați un flux de lucru care începe cu declanșatorul Comandă creată și setați o condiție care este adevărată dacă nivelul de risc al comenzii este egal cu „ridicat”. În secțiunea Mesaj a acțiunii Trimitere e-mail intern, utilizați următoarele variabile.
Exemplu de utilizare a variabilelor pentru a furniza informații despre o comandă frauduloasă.
Intrare
Ieșire
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!
Magazinul nostru Shopify a primit o comandă cu un risc ridicat de fraudă. Dorim să anulăm această comandă imediat, înainte de a fi trimisă în producție:
#1001
Dupont, Jeanne
jeanne@example.com
Vă rugăm să confirmați noua stare a comenzii. Mulțumim!
Afișarea articolelor dintr-o comandă folosind o buclă for
Atunci când se primește o comandă, poate fi util să se trimită un mesaj care conține produsele comandate. Puteți face acest lucru utilizând o buclă for, care execută în mod repetat un bloc de cod. Câmpurile de text care acceptă variabile acceptă și bucle for și obiectul forloop.
De exemplu, doriți să creați un flux de lucru care returnează o listă cu toate numerele de inventar și cantitățile dintr-o comandă. În secțiunea Mesaj a acțiunii Trimitere e-mail intern, utilizați următoarele variabile.
Exemplu de utilizare a unei bucle „for” pentru a furniza informații despre comandă.
Intrare
Ieșire
Order summary:
{% for a in order.lineItems %}
{{a.sku}} ( {{a.quantity}} )
{% endfor %}
Afișarea rândurilor unei comenzi folosind o buclă „for” cu informații suplimentare
Decideți să adăugați mai multe informații în e-mail, inclusiv numele produsului, numerele de inventar, prețul per articol și informațiile de expediere ale clientului. În secțiunea Mesaj a acțiunii Trimitere e-mail intern, utilizați următoarele variabile.
Exemplu de utilizare a buclei „for” pentru a furniza informații mai detaliate despre comandă.
Intrare
Ieșire
Order summary:
{% for a in order.lineItems %}
Product: {{a.title}}
SKU: {{a.sku}}
Price (per unit): ${{a.originalUnitPriceSet.shopMoney.amount}}
Quantity: {{a.quantity}}
{% endfor %}
Afișarea unor rânduri prin combinarea unei bucle „for” cu o instrucțiune „if”
Trebuie să urmăriți articolele vândute care sunt furnizate de un anumit vânzător. În secțiunea Mesaj a acțiunii Trimitere e-mail intern, utilizați următoarele variabile și includeți o instrucțiune if în bucla for.
Exemplu de utilizare a buclei „for” și a instrucțiunii „if” pentru a furniza informații despre comenzi pentru anumiți vânzători.
Intrare
Ieșire
Acme product sold:
{% for x in order.lineItems %}
{% if x.vendor == 'acme-vendor' %}
Product name: {{x.title}}
SKU: {{x.sku}}
{% endif %}
{% endfor %}
Produs Acme vândut:
Nume produs: Colanți cu talie înaltă - Negri
SKU: 8987097979
Obiecte de date complexe în Shopify Flow
Flow vă permite să accesați aproape orice date care se află în GraphQL Admin API. Aceasta include obiecte de date complexe, cum ar fi liste și obiecte. Cu toate acestea, există unele limitări în ceea ce puteți face cu aceste obiecte. Această secțiune prezintă aceste limitări și oferă exemple despre cum să lucrați cu ele.
În loc să apelați direct listele și obiectele, trebuie să parcurgeți lista printr-o buclă și să includeți numai câmpurile dorite.
De exemplu, în loc să apelați direct {{ order.lineItems }}, utilizați următorul format pentru a apela câmpuri specifice. Aceste exemple includ toate câmpurile care ar fi incluse prin apelarea directă a listei sau a obiectului. Copiați și lipiți câmpurile de care aveți nevoie.
Text
{% for li in order.lineItems %}
{% comment %}li.contract - omitted{% endcomment %}