Les variables de Liquid són marcadors de posició definits a Liquid que se substitueixen pels valors de la GraphQL Admin API quan s'executa un flux de treball. Les variables poden descriure els atributs dels clients, les comandes i els productes que participen en els teus fluxos de treball, com ara el número de comanda, el preu de la comanda o el nom del client. Les variables es poden utilitzar en les condicions per controlar la lògica del flux de treball o per exportar dades d'una acció.
Afegir variables als fluxos de treball mitjançant Liquid
Pots afegir variables mitjançant Liquid a qualsevol camp de text que contingui l'enllaç Afegeix una variable. Fes clic a l'enllaç Afegeix una variable a sota del camp corresponent i tria una variable de la llista.
Les variables de la llista Afegeix una variable es filtren perquè només utilitzis les variables retornades pels passos anteriors al pas actual, com ara els esdeveniments desencadenants. Per exemple, l'esdeveniment desencadenant Comanda creada proporciona els recursos de comanda i de botiga des de l'Admin API que es poden inserir com a variables. Després de triar una variable de la llista, s'afegeix al quadre de text amb el format adequat de Liquid.
També pots escriure Liquid directament al camp de text. Per exemple, pots utilitzar la variable {{ order.name }} per mostrar la cadena del nom de la comanda del panell d'administració de Shopify, com ara order-123.
Com que Flow utilitza l'Admin API per recuperar les dades utilitzades per a Liquid, la sintaxi de la variable utilitza l'estil camel case. Les variables camel case tenen la primera paraula que comença amb lletra minúscula i les següents comencen amb lletra majúscula, com ara firstName o canMarkAsPaid. Per exemple, per accedir a la data de creació d'un producte, introdueix {{ product.createdAt }}. Si utilitzes la sintaxi de Liquid en un tema de Shopify, que no utilitza l'estil camel case, hauràs d'introduir {{ product.created_at }}.
Etiquetes de condició i d'iteració de Liquid
Les etiquetes de Liquid es poden utilitzar amb variables per fer les funcions següents:
Escriure expressions condicionals, com ara determinar si el total d'una comanda és superior a 100 USD.
Iterar a través d'una llista d'objectes, com ara mostrar les dades per a cada partida en una comanda.
Pots utilitzar les etiquetes de Liquid per escriure aquestes expressions i iterar a través d'objectes.
Per exemple, el Liquid següent mostra el número de comanda si el total de la comanda és superior a 100 USD:
{% if order.totalPriceSet.shopMoney.amount > 100 %}
Order number: {{ order.name }}
{% endif %}
També pots utilitzar un bucle for per iterar a través d'una llista d'objectes, com ara les partides d'una comanda. Per exemple, el Liquid següent mostra el nom de cada partida d'una comanda:
{% for li in order.lineItems %}
{{ li.title }}
{% endfor %}
Flow admet les etiquetes condicionals (o de flux de control) de Liquid següents:
Pots transformar dades de variables en Liquid utilitzant filtres. Flow admet tots els filtres de Liquid de codi obert.
Per exemple, el Liquid següent elimina un prefix del nom de la comanda i mostra la resta: {{ order.name | remove: "Order-" }}
Consideracions a l'hora d'utilitzar variables de Liquid en els filtres
Abans de transformar variables utilitzant filtres, revisa les consideracions següents:
Flow no admet la notació de punts, disponible per a alguns filtres. Per exemple, Flow admet {{ order.lineItems | size }}, però no {{ order.lineItems.size }}.
Flow no admet la notació de punts per a metacamps. Per exemple, no pots utilitzar {{ order.metafields.custom.hold_note }}. En comptes d'això, has d'iterar pels metacamps tal com s'indica als exemples.
Flow no admet l'ús d'índexs per accedir a elements d'una llista. Per exemple, no pots utilitzar {{ order.lineItems[0].title }}. En comptes d'això, has d'iterar per les partides tal com s'indica als exemples.
Filtres de data
A més dels filtres estàndard de Liquid, Flow proporciona filtres de data per obtenir una data relativa a una altra per donar suport a l'esdeveniment desencadenant d'Hora programada i a les funcions d'Obtenir dades. Aquests filtres són: date_minus i date_plus. Per exemple:
Per retornar una data d'un dia en el futur: {{ "now" | date_plus: "1 day" }}
Per retornar una data d'un dia en el passat: {{ "now" | date_minus: "1 day" }}
Aquests filtres accepten second, minute, day, week, month i year com a unitat de durada, tant en singular (com ara second) com en plural (com ara seconds). També pots indicar els tipus d'unitats personalitzables següents:
Un enter que representa el nombre de segons: {{ "now" | date_minus: 3600 }}, on 3600 equival a 1 hora.
Una cadena de durada ISO8601: {{ "now" | date_minus: "P1Y2D" }}, on P1Y2D significa 1 any i 2 dies.
Filtres criptogràfics
Flow proporciona filtres criptogràfics per aplicar funcions de hash i crear codis d'autenticació de missatges basats en hash (HMAC). Aquests filtres són útils per crear identificadors únics, sumes de verificació o per integrar-se amb sistemes de tercers que requereixen formats de hash específics.
Filtres de hash
Shopify Flow admet els tipus de filtres de hash següents:
blake3: crea un hash BLAKE3 (recomanat per a ús general).
Per a finalitats de hashing en general i per a noves implementacions, hauries d'utilitzar blake3, ja que ofereix un rendiment i una seguretat superiors en comparació amb algorismes més antics. Tanmateix, sha256, sha1 i md5 estan disponibles per mantenir la compatibilitat amb sistemes de tercers.
Exemple d'ús:
{{ "hello world" | blake3 }} retorna el hash BLAKE3 d'"hello world".
Filtres HMAC
Per crear un HMAC amb una clau secreta, utilitza un dels filtres compatibles següents:
Vols mostrar les URL del client, la comanda i el producte inclosos en un flux de treball.
# 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>
Convertir una llista d'etiquetes en un metacamp
Vols convertir un conjunt d'etiquetes en un metacamp que és una llista de camps de text d'una línia. Crees un flux de treball mitjançant l'esdeveniment desencadenant Producte afegit a la botiga i utilitzes l'acció Actualitzar metacamp del producte. A la secció Valor de l'acció Actualitzar metacamp del producte, afegeixes el codi de Liquid següent. Aquest exemple suposa que només necessites configurar els valors una vegada quan es crea el producte, i que el producte té dues etiquetes rellevants: color:red i color:orange.
Exemple de Liquid per configurar la llista d'un camp de text d'una línia.
Escriure un missatge de correu electrònic dinàmic per a una comanda
Vols crear un flux de treball per enviar un correu electrònic a un empleat quan un client gasta més de 500 $ en una comanda. Crees un flux de treball mitjançant l'esdeveniment desencadenant Comanda creada, estableixes una condició que sigui certa si el total de la comanda és superior a 500 $ i utilitzes l'acció Enviar correu electrònic intern. A la secció Missatge de l'acció Enviar correu electrònic intern, utilitzes les variables següents.
Exemple d'ús de variables per proporcionar dades del client.
Entrada
Sortida
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 }}.
Si us plau, envia una nota d'agraïment personal a Jeanne Dupont (jeanne@example.com) per haver fet una comanda de 763,42 $.
Escriure un missatge de correu electrònic dinàmic per a un producte que té poc estoc
Decideixes que cal informar un membre del personal quan l'estoc del producte s'estigui esgotant i calgui fer una comanda per abastir la botiga. Crees un flux de treball que comença amb l'esdeveniment desencadenant S'ha canviat la quantitat en estoc, i estableixes una condició que sigui certa si la quantitat en estoc anterior és inferior o igual a 10. A la secció Missatge de l'acció Enviar correu electrònic intern, utilitzes les variables següents.
Exemple d'ús de variables per proporcionar detalls de l'article.
Entrada
Sortida
Please reorder {{ product.title }}. Email owner@store.com to verify that they've received the purchase order.
Torna a demanar High Waist Leggings - Negre. Envia un correu electrònic a owner@example.com per verificar que ha rebut l'ordre de compra.
Escriure un missatge de correu electrònic dinàmic per avisar el personal sobre una comanda fraudulenta
Vols cancel·lar les comandes que tenen un nivell de risc alt, però prefereixes que el personal cancel·li la comanda manualment. Crees un flux de treball que comença amb l'esdeveniment desencadenant Comanda creada, i estableixes una condició que sigui certa si el nivell de risc de la comanda és alt. A la secció Missatge de l'acció Enviar correu electrònic intern, utilitzes les variables següents.
Exemple d'ús de variables per proporcionar informació sobre una comanda fraudulenta.
Entrada
Sortida
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!
La nostra botiga de Shopify ha rebut una comanda amb un risc alt de frau. Ens agradaria cancel·lar aquesta comanda de seguida, abans que s'enviï a producció:
#1001
Dupont, Jeanne
jeanne@example.com
Si us plau, confirma el nou estat de la comanda. Gràcies!
Mostrar les partides d'una comanda mitjançant un bucle for
Quan es rep una comanda, pot ser útil enviar un missatge que contingui els productes demanats. Pots fer-ho mitjançant un bucle for, que executa repetidament un bloc de codi. Els camps de text compatibles amb variables també admeten bucles for i l'objecte forloop.
Per exemple, vols crear un flux de treball que retorni una llista de tots els SKU i les quantitats d'una comanda. A la secció Missatge de l'acció Enviar correu electrònic intern, utilitzes les variables següents.
Exemple d'ús d'un bucle for per proporcionar informació de la comanda.
Entrada
Sortida
Order summary:
{% for a in order.lineItems %}
{{a.sku}} ( {{a.quantity}} )
{% endfor %}
Resum de la comanda:
8987097979 (50)
8877778887 (3)
888998898B (1)
Mostrar les partides d'una comanda mitjançant un bucle for amb informació addicional
Decideixes afegir més informació al correu electrònic, inclosos el nom del producte, els SKU, el preu per article i la informació d'enviament del client. A la secció Missatge de l'acció Enviar correu electrònic intern, utilitzes les variables següents.
Exemple d'ús d'un bucle for per oferir informació més detallada sobre la comanda.
Entrada
Sortida
Order summary:
{% for a in order.lineItems %}
Product: {{a.title}}
SKU: {{a.sku}}
Price (per unit): ${{a.originalUnitPriceSet.shopMoney.amount}}
Quantity: {{a.quantity}}
{% endfor %}
Resum de la comanda:
Producte: High Waist Leggings - Black
SKU: 8987097979
Preu (per unitat): 8,49 $
Quantitat: 5
Producte: Athletic Socks - Blue
SKU: 888998898B
Preu (per unitat): 5,61 $
Quantitat: 2
Mostra algunes partides combinant un bucle for amb una instrucció if
Has de fer el seguiment dels articles venuts que proporciona un proveïdor específic. A la secció Missatge de l'acció Enviar un correu electrònic intern, fas servir les variables següents i inclous una instrucció if al bucle for.
Exemple d'ús del bucle for i la instrucció if per proporcionar informació de la comanda per a proveïdors específics.
Entrada
Sortida
Acme product sold:
{% for x in order.lineItems %}
{% if x.vendor == 'acme-vendor' %}
Product name: {{x.title}}
SKU: {{x.sku}}
{% endif %}
{% endfor %}
S'ha venut el producte Acme:
Nom del producte: High Waist Leggings - Black
SKU: 8987097979
Objectes de dades complexos a Shopify Flow
Flow et permet accedir a gairebé qualsevol dada de la GraphQL Admin API. Això inclou objectes de dades complexos, com ara llistes i objectes. Tanmateix, hi ha algunes limitacions pel que fa a què pots fer amb aquests objectes. Aquesta secció descriu aquestes limitacions i proporciona exemples sobre com treballar-hi.
En lloc de cridar directament llistes i objectes, has de recórrer la llista en un bucle i incloure només els camps que vulguis.
Per exemple, en lloc de cridar {{ order.lineItems }} directament, fes servir el format següent per cridar camps específics. Aquests exemples inclouen tots els camps que s'inclourien si es cridés la llista o l'objecte directament. Copia i enganxa els camps que necessitis.
Text
{% for li in order.lineItems %}
{% comment %}li.contract - omitted{% endcomment %}