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.
Su questa pagina
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.
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:
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:
Flow supporta i seguenti tag condizionali (o del flusso di controllo) di Liquid:
- if
- unless
- elsif/else
- case/when
- and/or (condizioni multiple)
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.
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
.
Input | Output |
---|---|
{% 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.
Input | Output |
---|---|
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.
Input | Output |
---|---|
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.
Input | Output |
---|---|
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.
Input | Output |
---|---|
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.
Input | Output |
---|---|
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
.
Input | Output |
---|---|
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.