Variabili Liquid in Shopify Flow

Le variabili sono segnaposti che vengono sostituiti con valori durante l'esecuzione di un flusso di lavoro e descrivono gli attributi dei clienti, degli ordini e dei prodotti coinvolti nei flussi di lavoro. Ad esempio, esistono variabili per il numero d'ordine, il prezzo dell'ordine, il nome del cliente e così via. Le variabili possono essere utilizzate nelle condizioni per controllare la logica nel flusso di lavoro o per l'output dei dati in un'azione.

Informazioni su Liquid

Liquid è un linguaggio del modello utilizzato per accedere alle variabili nelle azioni e scrivere codice in Flow. Flow utilizza una variante di Liquid che segue più da vicino la libreria open source. I temi di Shopify utilizzano un'altra variante di Liquid, ma quest'ultima è specifica per i temi e include molti più filtri e tag di quelli supportati da Flow, oltre a una sintassi diversa per l'accesso alle variabili.

Variabili Liquid

Puoi aggiungere variabili Liquid a ogni campo di testo che contenga il link Aggiungi una variabile. Clicca sul link Aggiungi una variabile sotto il campo pertinente, quindi scegli una variabile dall'elenco.

immagine che mostra quali campi accettano liquid

Le variabili nell'elenco Aggiungi una variabile vengono filtrate, in modo da visualizzare solo le variabili restituite per passaggi precedenti al passaggio corrente, come i trigger. Ad esempio, il trigger Ordine creato fornisce risorse ordine e negozio, che ti consentono di utilizzare qualsiasi variabile relativa all'ordine o alle impostazioni del tuo negozio accessibili nell'API Admin di GraphQL. Dopo aver scelto una variabile dall'elenco, questa viene formattata correttamente e aggiunta alla casella di testo.

Puoi anche scrivere la variabile Liquid direttamente nel blocco di testo. Ad esempio, puoi utilizzare la variabile {{ order.name }} per visualizzare la stringa dell'ordine mostrata nel pannello di controllo Shopify, come order-123.

Poiché Flow utilizza l'API Admin di GraphQL per recuperare i dati che utilizzi in Liquid, la sintassi della variabile utilizza la cosiddetta "notazione a cammello". Ad esempio, per accedere alla data di creazione di un prodotto, inserisci {{ product.createdAt }}. Se utilizzi la sintassi Liquid in un tema Shopify, devi inserire {{ product.created_at }}.

Tag Liquid condizionali e di iterazione

A volte può essere necessario utilizzare i tag Liquid per:

  • scrivere istruzioni condizionali, ad esempio per determinare se il totale di un ordine è maggiore di 100 USD;
  • scorrere un elenco di oggetti, ad esempio l'output dei dati per ogni voce di un ordine.

Puoi utilizzare i tag Liquid per scrivere queste istruzioni e scorrere gli oggetti.

Ad esempio, il seguente Liquid mostra il numero dell'ordine se il totale dell'ordine è maggiore di 100 USD:

{% if order.totalPriceSet.shopMoney.amount > 100 %}
  Order number: {{ order.name }}
{% endif %}

Puoi utilizzare un ciclo for per eseguire un'iterazione in un elenco di oggetti, come nel caso delle voci di un ordine. Il seguente Liquid mostra il nome di ogni voce di un ordine:

{% for li in order.lineItems %}
  {{ li.title }}
{% endfor %}

Flow supporta i seguenti tag condizionali (o del flusso di controllo) di Liquid:

Flow supporta inoltre i seguenti tag di iterazione di Liquid:

Filtri

I filtri ti consentono di trasformare i dati in Liquid. Flow supporta tutti i filtri Liquid open source.

Ad esempio, il seguente Liquid rimuove un prefisso dal nome di un ordine e restituisce ciò che resta: {{ order.name | remove: "Order-" }}

Oltre ai filtri Liquid standard, Flow fornisce filtri data per ottenere una data relativa a un'altra data per supportare il trigger dell'Orario programmato e le funzionalità Get data (Ottieni dati). Questi filtri sono: date_minus e date_plus.

Per restituire una data di un giorno nel futuro:{{ "now" | date_plus: "1 day" }}

Per restituire una data di un giorno nel passato:{{ "now" | date_minus: "1 day" }}

Questi filtri accettano second, minute, day, week, month e year come unità di durata, sia singolari (ad esempio second) che plurali (ad esempio seconds). Oltre a questo formato, puoi anche fornire un numero intero (numero di secondi). Per esempio:{{ "now" | date_minus: 3600 }}

Puoi fornire una stringa di durata ISO8601, dove P1Y2D indica un anno e due giorni:{{ "now" | date_minus: "P1Y2D" }}

Considerazioni sull'utilizzo delle variabili Liquid nei filtri

  • Flow non supporta la notazione con punti disponibile per alcuni filtri. Ad esempio, supporta {{ order.lineItems | size }} ma non {{ order.lineItems.size }}.
  • Flow non supporta la notazione con punti per i metafield. Ad esempio, non puoi utilizzare {{ order.metafields.custom.hold_note }}. Devi invece passare ai cicli sui metafield come illustrato negli esempi.
  • Flow non supporta l'utilizzo degli indici per accedere agli elementi di un elenco. Ad esempio, non puoi utilizzare {{ order.lineItems[0].title }}. Devi invece passare ai cicli sulle voci come illustrato negli esempi.

Esempi

Per avere un'idea migliore di come utilizzare le variabili Liquid, considera i seguenti esempi.

URL di output per le risorse

Desideri l'output degli URL del cliente, dell'ordine e del prodotto coinvolti in un flusso di lavoro.

# 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>

Conversione di un elenco di tag in un metafield

Vuoi convertire un insieme di tag in un metafield, che è un elenco di campi di testo su una sola riga. Puoi creare un flusso di lavoro utilizzando il trigger Prodotto aggiunto al negozio e utilizzare l'azione Aggiorna metafield del prodotto. Nella sezione Valore dell'azione Aggiorna metafield del prodotto aggiungi il seguente codice Liquid. Questo esempio presuppone che sia necessario impostare i valori solo una volta al momento della creazione del prodotto e che il prodotto abbia due tag rilevanti: color:red e color:orange.

Esempio di Liquid per impostare l'elenco di un campo di testo su una sola riga.
InputOutput
{% capture mf_value %}
{%- for tags_item in product.tags -%}
{%- if tags_item contains "color:" -%}
"{{- tags_item | remove_first: "color:" | strip -}}",
{%- endif -%}
{%- endfor -%}
{% endcapture -%}
[{{mf_value | remove_last: ","}}]
["rosso","arancione"]

Scrittura di un messaggio email dinamico per un ordine

Potresti voler creare un flusso di lavoro per inviare un'email a un dipendente quando un cliente spende più di 500 USD per un ordine. Puoi creare un flusso di lavoro utilizzando il trigger Ordine creato, impostare una condizione come true quando il totale dell'ordine è superiore a 500 USD e utilizzare l'azione Invia email interna. Nella sezione Messaggio dell'azione Invia email interna utilizzerai le variabili seguenti.

Esempio di uso delle variabili per fornire i dettagli del cliente.
InputOutput
Invia una nota di ringraziamento personale a {{ order.customer.firstName }} {{ order.customer.lastName }}({{ order.customer.email }}) per aver effettuato un ordine di {{ order.totalPriceSet.shopMoney.amount }} USD.Invia una nota di ringraziamento personale a Rosa Bianchi (rosa@example.com) per aver effettuato un ordine di 763,42 USD.

Scrittura di un messaggio email dinamico per un prodotto con scorte scarse

Decidi di informare un membro dello staff quando le scorte dei prodotti si stanno esaurendo ed è necessario effettuare un ordine per aumentarle. Crei un flusso di lavoro che si avvia con il trigger Inventory quantity changed (Quantità di scorte modificata) e imposti una condizione come true quando la quantità di scorte precedente è inferiore o uguale a 10. Nella sezione Message (Messaggio) dell'azione Send internal email (Invia email interna) utilizzerai le variabili seguenti.

Esempio di uso delle variabili per fornire i dettagli dell'articolo.
InputOutput
Ordina di nuovo {{ product.title }}. Invia un'email all'indirizzo owner@store.com per verificare che abbia ricevuto l'ordine d'acquisto.Ordina di nuovo i leggings a vita alta - Nero. Invia un'email all'indirizzo owner@example.com per verificare che abbia ricevuto l'ordine d'acquisto.

Scrittura di un messaggio email dinamico per comunicare allo staff che si tratta di un ordine fraudolento

Desideri annullare gli ordini con un livello di rischio alto, ma preferisci che il tuo staff compia tale azione manualmente. Puoi creare un flusso di lavoro che si avvia con il trigger Order created (Ordine creato) e impostare una condizione come true quando il livello di rischio dell'ordine è uguale a Alto. Nella sezione Message (Messaggio) dell'azione Send internal email (Invia email interna) utilizzerai le variabili seguenti.

Esempio di uso delle variabili per fornire i dettagli di un ordine fraudolento.
InputOutput
Il nostro negozio Shopify ha ricevuto un ordine ad alto rischio di frode. Vogliamo annullarlo immediatamente, prima che venga inviato alla produzione:

{{ order.name }}
{{ order.billingAddress.lastName }}, {{ order.billingAddress.firstName }}
{{ order.email }}

Conferma il nuovo stato dell'ordine. Grazie!
Il nostro negozio Shopify ha ricevuto un ordine ad alto rischio di frode. Vogliamo annullarlo immediatamente, prima che venga inviato alla produzione:

#1001
Dupont, Jeanne
jeanne@example.com

Conferma il nuovo stato dell'ordine. Grazie!

Output delle voci di un ordine utilizzando un ciclo for

Alla ricezione di un ordine, potrebbe risultare utile inviare un messaggio con un riepilogo dei prodotti ordinati. Per farlo, puoi utilizzare un for loop, che esegue ripetutamente un blocco di codice. I campi di testo che supportano le variabili supportano anche i cicli for e l'oggetto forloop.

Ad esempio, potresti voler creare un flusso di lavoro che restituisca un elenco di tutte le SKU e le quantità di un ordine. Nella sezione Message (Messaggio) dell'azione Send internal email (Invia email interna) utilizzerai le variabili seguenti.

Esempio di uso del ciclo for per fornire informazioni sull'ordine.
InputOutput
Riepilogo dell'ordine:
{% for a in order.lineItems %}
SKU: {{a.sku}} ( {{a.quantity}} ),
{% endfor %}
Riepilogo dell'ordine:
8987097979 (50)
8877778887 (3)
888998898B (1)

Generazione delle voci di un ordine utilizzando un ciclo for con informazioni aggiuntive

Decidi di aggiungere all'email ulteriori informazioni, tra cui il nome del prodotto, le SKU, il prezzo per articolo e i dati di spedizione del cliente Nella sezione Message (Messaggio) dell'azione Send internal email (Invia email interna) utilizzerai le variabili seguenti.

Esempio di uso del ciclo for per fornire informazioni più dettagliate sull'ordine.
InputOutput
Riepilogo dell'ordine:
{% for a in order.lineItems %}
Prodotto: {{a.title}}
SKU: {{a.sku}}
Prezzo (unitario): {{a.originalUnitPriceSet.shopMoney.amount}} USD
Quantità: {{a.quantity}}
{% endfor %}
Riepilogo dell'ordine:
Prodotto: Leggings a vita alta - Nero
SKU: 8987097979
Prezzo (unitario): 8,49 USD
Quantità: 5
Prodotto: Calzini sportivi - Blu
SKU: 888998898B
Prezzo (unitario): 5,61 USD
Quantità: 2

Generazione di alcune voci combinando un ciclo for con un costrutto if

Devi monitorare gli articoli venduti forniti da un fornitore specifico. Nella sezione Message (Messaggio) dell'azione Send internal email (Invia email interna) utilizzerai le variabili seguenti e includerai un costrutto if nel for loop.

Esempio di uso del ciclo for e del costrutto if per fornire informazioni sull'ordine per fornitori specifici.
InputOutput
Prodotto Acme venduto:
{% for x in order.lineItems %}
{% if x.vendor == 'acme-vendor' %}
Nome del prodotto: {{x.title}}
SKU: {{x.sku}}
{% endif %}
{% endfor %}
Prodotto Acme venduto:
Nome del prodotto: Leggings a vita alta - Nero
SKU: 8987097979

Oggetti dati complessi su Shopify Flow

Flow ti consente di accedere a quasi tutti i dati presenti nell'Admin API di GraphQL, inclusi oggetti dati complessi, come elenchi e oggetti. Tuttavia, esistono alcuni limiti alle operazioni che puoi eseguire con questi oggetti. La sezione illustra queste limitazioni e fornisce esempi su come lavorarci.

Anziché chiamare direttamente elenchi e oggetti, è necessario scorrere l'elenco includendo solo i campi desiderati.

Ad esempio, anziché chiamare direttamente {{ order.lineItems }}, utilizza il formato seguente per chiamare campi specifici. Questi esempi includono tutti i campi che verrebbero inclusi chiamando direttamente l'elenco o l'oggetto. Copia e incolla i campi di cui hai bisogno.

Non trovi le risposte che stai cercando? Siamo qui per aiutarti.