As variables de Liquid son marcadores de posición definidos en Liquid que se substitúen polos valores da GraphQL Admin API cando se executa un fluxo de traballo. As variables poden describir os atributos dos clientes, pedidos e produtos que participan nos teus fluxos de traballo, como o número de pedido, o prezo do pedido ou o nome do cliente. As variables pódense usar en condicións para controlar a lóxica do teu fluxo de traballo ou para extraer datos dunha acción.
Engadir variables nos fluxos de traballo mediante Liquid
Podes engadir variables mediante Liquid en calquera campo de texto que conteña a ligazón Engadir unha variable. Fai clic na ligazón Engadir unha variable debaixo do campo correspondente e logo escolle unha variable da lista.
As variables da lista Engadir unha variable están filtradas, de forma que só uses as variables devoltas polos pasos anteriores ao paso actual, como os activadores. Por exemplo, o activador Pedido creado proporciona recursos do pedido e da tenda procedentes da Admin API que se poden inserir como variables. Despois de escoller unha variable da lista, engádese á caixa de texto como código Liquid correctamente formatado.
Tamén podes escribir Liquid directamente no campo de texto. Por exemplo, podes usar a variable {{ order.name }} para mostrar a cadea do pedido no administrador de Shopify, como order-123.
Como Flow usa a Admin API para recuperar os datos usados para Liquid, a sintaxe das variables utiliza o formato camel case. As variables en formato camel case teñen a primeira palabra que comeza por minúscula e as palabras seguintes que comezan por maiúscula, como firstName ou canMarkAsPaid. Por exemplo, para acceder á data en que se creou un produto, introduce {{ product.createdAt }}. Se utilizas a sintaxe de Liquid nun tema de Shopify, que non usa o formato camel case, entón deberías introducir {{ product.created_at }}.
Etiquetas condicionais e de iteración de Liquid
Pódense usar etiquetas de Liquid con variables para facer as seguintes funcións:
Escribir instrucións condicionais, como determinar se o total dun pedido é superior a 100 $.
Iterar por unha lista de obxectos, como xerar datos para cada artigo de liña dun pedido.
Podes usar etiquetas de Liquid para escribir estas instrucións e iterar polos obxectos.
Por exemplo, o seguinte código Liquid mostra o número de pedido se o total do pedido é superior a 100 $:
{% if order.totalPriceSet.shopMoney.amount > 100 %}
Order number: {{ order.name }}
{% endif %}
Tamén podes usar un bucle for para iterar por unha lista de obxectos, como os artigos de liña dun pedido. Por exemplo, o seguinte código Liquid mostra o nome de cada artigo de liña nun pedido:
{% for li in order.lineItems %}
{{ li.title }}
{% endfor %}
Flow é compatible coas seguintes etiquetas condicionais (ou etiquetas de fluxo de control) de Liquid:
Podes transformar os datos das variables en Liquid mediante os filtros. Flow é compatible con todos os filtros de Liquid de código aberto.
Por exemplo, o seguinte código Liquid elimina un prefixo do nome do pedido e mostra o que queda: {{ order.name | remove: "Order-" }}
Consideracións sobre o uso das variables de Liquid nos filtros
Antes de transformar as variables mediante filtros, revisa as seguintes consideracións:
Flow non é compatible coa notación de punto que está dispoñible nalgúns filtros. Por exemplo, Flow admite {{ order.lineItems | size }}, pero non {{ order.lineItems.size }}.
Flow non é compatible coa notación de punto nos metacampos. Por exemplo, non podes usar {{ order.metafields.custom.hold_note }}. No seu lugar, debes iterar polos metacampos da forma indicada nos exemplos.
Flow non admite o uso de índices para acceder aos elementos dunha lista. Por exemplo, non podes usar {{ order.lineItems[0].title }}. No seu lugar, debes iterar polos artigos de liña da forma indicada nos exemplos.
Filtros de data
Ademais dos filtros estándar de Liquid, Flow proporciona filtros de data para obter unha data relativa a outra data e ser compatible así co activador Hora programada e as funcións para Obter datos. Estes filtros son: date_minus e date_plus. Por exemplo:
Para devolver unha data un día no futuro: {{ "now" | date_plus: "1 day" }}
Para devolver unha data un día no pasado: {{ "now" | date_minus: "1 day" }}
Estes filtros aceptan second, minute, day, week, month e year como unidade de duración, tanto en singular (como second) como en plural (como seconds). Tamén podes proporcionar os seguintes tipos de unidades personalizables:
Un número enteiro que represente o número de segundos: {{ "now" | date_minus: 3600 }}, onde 3600 equivale a 1 hora.
Unha cadea de duración ISO8601: {{ "now" | date_minus: "P1Y2D" }}, onde P1Y2D significa 1 ano e 2 días.
Filtros criptográficos
Flow proporciona filtros criptográficos para realizar funcións hash e crear Códigos de autenticación de mensaxes baseados en hash (HMAC). Estes filtros resultan útiles para crear identificadores únicos, sumas de verificación ou para a integración con sistemas de terceiros que requiran formatos hash específicos.
Filtros hash
Shopify Flow admite os seguintes tipos de filtros hash:
blake3: crea un hash BLAKE3 (recomendado para uso xeral).
Para fins xerais de hash e novas implementacións, recoméndase usar blake3, xa que ofrece un rendemento e unha seguridade superiores en comparación cos algoritmos máis antigos. Non obstante, sha256, sha1 e md5 están dispoñibles por motivos de compatibilidade con sistemas de terceiros.
Exemplo de uso:
{{ "hello world" | blake3 }} devolve o hash BLAKE3 de "hello world".
Filtros HMAC
Para crear un HMAC cunha chave secreta, usa un dos seguintes filtros compatibles:
Queres mostrar os URL do cliente, o pedido e o produto que están implicados nun fluxo de traballo.
# 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>
Converter unha lista de etiquetas nun metacampo
Queres converter un conxunto de etiquetas nun metacampo que sexa unha lista de campos de texto de liña única. Creas un fluxo de traballo mediante o activador Produto engadido á tenda e usas a acción Actualizar metacampo do produto. Na sección Valor da acción Actualizar metacampo do produto, engades o seguinte código de Liquid. Este exemplo asume que só necesitas configurar os valores unha vez cando se crea o produto e que o produto ten dúas etiquetas relevantes: color:red e color:orange.
Exemplo de Liquid para configurar a lista dun campo de texto de liña única.
Escribir unha mensaxe de correo electrónico dinámica para un pedido
Queres crear un fluxo de traballo para enviar un correo electrónico a un empregado cando un cliente gaste máis de 500 $ nun pedido. Creas un fluxo de traballo co activador Pedido creado, defines unha condición que se cumpra se o total do pedido é superior a 500 $ e usas a acción Enviar correo electrónico interno. Na sección Mensaxe da acción Enviar correo electrónico interno, usas as seguintes variables.
Exemplo de uso de variables para proporcionar información do cliente.
Entrada
Saída
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 }}.
Envía unha nota de agradecemento persoal a Jeanne Dupont (jeanne@example.com) por facer un pedido de 763,42 $.
Escribir unha mensaxe de correo electrónico dinámica para un produto que ten pouco stock
Decides que necesitas informar a un membro do persoal cando o inventario do produto se estea esgotando e sexa necesario facer un pedido para abastecer máis stock. Creas un fluxo de traballo que comeza co activador Cantidade de inventario modificada e defines unha condición que se cumpra se a cantidade de inventario anterior é menor ou igual a 10. Na sección Mensaxe da acción Enviar correo electrónico interno, usas as seguintes variables.
Exemplo de uso de variables para proporcionar os detalles do artigo.
Entrada
Saída
Please reorder {{ product.title }}. Email owner@store.com to verify that they've received the purchase order.
Volve pedir High Waist Leggings - Black. Envía un correo electrónico a owner@example.com para verificar que recibiu a orde de compra.
Escribir unha mensaxe de correo electrónico dinámica para notificar ao persoal un pedido fraudulento
Queres cancelar os pedidos que teñen un nivel de risco alto, pero prefires que o teu persoal os cancele manualmente. Creas un fluxo de traballo que comeza co activador Pedido creado e defines unha condición que se cumpra se o nivel de risco do pedido é alto. Na sección Mensaxe da acción Enviar correo electrónico interno, usas as seguintes variables.
Exemplo de uso de variables para proporcionar información sobre un pedido fraudulento.
Entrada
Saída
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!
A nosa tenda de Shopify recibiu un pedido con alto risco de fraude. Gustaríanos cancelar este pedido canto antes, antes de que se envíe a produción:
#1001
Dupont, Jeanne
jeanne@example.com
Confirma o novo estado do pedido. Grazas!
Mostrar os artigos de liña dun pedido usando un bucle for
Cando se recibe un pedido, pode ser útil enviar unha mensaxe que conteña os produtos solicitados. Podes facelo usando un bucle for, que executa un bloque de código varias veces. Os campos de texto que admiten variables tamén admiten bucles for e o obxecto forloop.
Por exemplo, queres crear un fluxo de traballo que devolva unha lista con todos os SKU e as cantidades dun pedido. Na sección Mensaxe da acción Enviar correo electrónico interno, usas as seguintes variables.
Exemplo de uso do bucle for para proporcionar información do pedido.
Entrada
Saída
Order summary:
{% for a in order.lineItems %}
{{a.sku}} ( {{a.quantity}} )
{% endfor %}
Resumo do pedido:
8987097979 (50)
8877778887 (3)
888998898B (1)
Mostrar os artigos de liña dun pedido usando un bucle for con información adicional
Decides engadir máis información ao correo electrónico, incluíndo o nome do produto, os SKU, o prezo por artigo e a información de envío do cliente. Na sección Mensaxe da acción Enviar correo electrónico interno, usas as seguintes variables.
Exemplo do uso do bucle for para proporcionar información máis exhaustiva sobre os pedidos.
Entrada
Saída
Order summary:
{% for a in order.lineItems %}
Product: {{a.title}}
SKU: {{a.sku}}
Price (per unit): ${{a.originalUnitPriceSet.shopMoney.amount}}
Quantity: {{a.quantity}}
{% endfor %}
Resumo do pedido:
Produto: Mallas de cintura alta - Negro
SKU: 8987097979
Prezo (por unidade): 8,49 $
Cantidade: 5
Produto: Calcetíns de deporte - Azul
SKU: 888998898B
Prezo (por unidade): 5,61 $
Cantidade: 2
Xerar algúns artigos de liña combinando un bucle for cunha declaración if
Tes que rastrexar os artigos vendidos que fornezca un provedor específico. Na sección Mensaxe da acción Enviar correo electrónico interno, utilizas as seguintes variables e inclúes unha instrución if no teu bucle for.
Exemplo do uso do bucle for e a instrución if para proporcionar información do pedido para provedores específicos.
Entrada
Saída
Acme product sold:
{% for x in order.lineItems %}
{% if x.vendor == 'acme-vendor' %}
Product name: {{x.title}}
SKU: {{x.sku}}
{% endif %}
{% endfor %}
Produto Acme vendido:
Nome do produto: Mallas de cintura alta - Negro
SKU: 8987097979
Obxectos de datos complexos en Shopify Flow
Flow permíteche acceder a case calquera dato que estea na GraphQL Admin API. Isto inclúe obxectos de datos complexos, como listas e obxectos. Non obstante, hai algunhas limitacións respecto ao que podes facer con estes obxectos. Nesta sección descríbense as devanditas limitacións e proporciónanse exemplos de como traballar con eles.
En lugar de chamar a listas e obxectos directamente, debes iterar sobre a lista e incluír unicamente os campos que queiras.
Por exemplo, en lugar de chamar a {{ order.lineItems }} directamente, utiliza o seguinte formato para chamar a campos específicos. Estes exemplos inclúen todos os campos que se incluirían ao chamar á lista ou ao obxecto directamente. Copia e pega os campos que precises.
Texto
{% for li in order.lineItems %}
{% comment %}li.contract - omitted{% endcomment %}