Utilisation des variables Liquid dans Shopify Flow
Les variables Liquid sont des paramètres fictifs définis dans Liquid, qui sont remplacés par des valeurs provenant de la GraphQL Admin API lors de l’exécution d’un flux de travail. Les variables peuvent décrire les attributs des clients, des commandes et des produits qui sont impliqués dans vos flux de travail, tels que le numéro de commande, le prix de la commande ou le nom du/de la client(e). Les variables peuvent être utilisées dans des conditions pour contrôler la logique de votre flux de travail, ou pour exporter des données à partir d’une action.
Ajout de variables dans les flux de travail à l’aide de Liquid
Vous pouvez ajouter des variables à l’aide de Liquid à toute zone de texte qui contient le lien Ajouter une variable. Cliquez sur le lien Ajouter une variable sous le champ concerné, puis choisissez une variable dans la liste.
Les variables de la liste Ajouter une variable sont filtrées, de sorte que vous n’utilisez que les variables renvoyées par les étapes antérieures à l’étape actuelle, comme les déclencheurs. Par exemple, le déclencheur Commande créée fournit des ressources de commande et de boutique à partir de l’Admin API qui peuvent être insérées en tant que variables. Une fois que vous avez choisi une variable dans la liste, celle-ci est ajoutée à la zone de texte sous la forme de Liquid correctement formaté.
Vous pouvez également écrire du Liquid directement dans la zone de texte. Par exemple, vous pouvez utiliser la variable {{ order.name }} pour afficher la chaîne de la commande de l’interface administrateur Shopify, telle que order-123.
Étant donné que Flow utilise l’Admin API pour récupérer les données utilisées pour Liquid, la syntaxe des variables utilise la casse camel. Dans les variables en casse camel, le premier mot commence par une lettre minuscule, et les mots suivants commencent par une lettre majuscule, comme firstName ou canMarkAsPaid. Par exemple, pour accéder à la date de création d’un produit, saisissez {{ product.createdAt }}. Si vous utilisez la syntaxe Liquid dans un thème Shopify, qui n’utilise pas la casse camel, vous devez alors saisir {{ product.created_at }}.
Balises Liquid conditionnelles et d'itération
Les balises Liquid peuvent être utilisées avec des variables pour effectuer les fonctions suivantes :
Rédiger des instructions conditionnelles, par exemple pour déterminer si le total d’une commande est supérieur à 100 $.
Itérer dans une liste d’objets, par exemple pour extraire des données pour chaque article du panier d’une commande.
Vous pouvez utiliser des balises Liquid pour rédiger ces instructions et itérer dans des objets.
Par exemple, le Liquid suivant affiche le numéro de commande si le total de la commande est supérieur à 100 $ :
{% if order.totalPriceSet.shopMoney.amount > 100 %}
Order number: {{ order.name }}
{% endif %}
Vous pouvez également utiliser une boucle for pour itérer dans une liste d’objets, tels que les articles du panier d’une commande. Par exemple, le Liquid suivant affiche le nom de chaque article du panier d’une commande :
{% for li in order.lineItems %}
{{ li.title }}
{% endfor %}
Flow prend en charge les balises Liquid conditionnelles (ou de contrôle de flux) suivantes :
Vous pouvez transformer les données variables dans Liquid à l’aide de filtres. Flow prend en charge tous les filtres Liquid open source.
Par exemple, le Liquid suivant supprime un préfixe du nom d’une commande et affiche ce qui reste : {{ order.name | remove: "Order-" }}
Points à prendre en compte concernant l’utilisation des variables Liquid dans les filtres
Avant de transformer des variables à l’aide de filtres, examinez les points suivants :
Flow ne prend pas en charge la notation par points qui est disponible pour certains filtres. Par exemple, Flow prend en charge {{ order.lineItems | size }}, mais pas {{ order.lineItems.size }}.
Flow ne prend pas en charge la notation par points pour les champs méta. Par exemple, vous ne pouvez pas utiliser {{ order.metafields.custom.hold_note }}. Au lieu de cela, vous devez parcourir les champs méta en boucle, comme indiqué dans les exemples.
Flow ne prend pas en charge l’utilisation d’index pour accéder aux articles d’une liste. Par exemple, vous ne pouvez pas utiliser {{ order.lineItems[0].title }}. Au lieu de cela, vous devez parcourir les articles du panier en boucle, comme indiqué dans les exemples.
Filtres de date
En plus des filtres Liquid standard, Flow fournit des filtres de date pour obtenir une date relative à une autre date afin de prendre en charge le déclencheur Heure programmée et les fonctionnalités Obtenir des données. Ces filtres sont les suivants : date_minus et date_plus. Par exemple :
Pour renvoyer une date dans un jour : {{ "now" | date_plus: "1 day" }}
Pour renvoyer une date un jour dans le passé : {{ "now" | date_minus: "1 day" }}
Ces filtres acceptent second, minute, day, week, month et year comme unité de durée, au singulier (comme second) et au pluriel (comme seconds). Vous pouvez également fournir les types d’unités personnalisables suivants :
Un nombre entier représentant le nombre de secondes : {{ "now" | date_minus: 3600 }}, où 3600 équivaut à 1 heure.
Une chaîne de durée ISO8601 : {{ "now" | date_minus: "P1Y2D" }}, où P1Y2D signifie 1 an et 2 jours.
Filtres cryptographiques
Shopify Flow fournit des filtres cryptographiques pour le hachage et la création de codes d’authentification de message par hachage (HMAC). Ces filtres sont utiles pour créer des identifiants uniques, des sommes de contrôle ou pour l’intégration à des systèmes tiers qui nécessitent des formats de hachage spécifiques.
Filtres de hachage
Shopify Flow prend en charge les types de filtres de hachage suivants :
blake3 : crée un hachage BLAKE3 (recommandé pour une utilisation générale).
Pour le hachage général et les nouvelles implémentations, il est recommandé d’utiliser blake3, qui offre des performances et une sécurité supérieures à celles des algorithmes plus anciens. Cependant, sha256, sha1 et md5 sont disponibles pour assurer la compatibilité avec les systèmes tiers.
Exemple d’utilisation :
{{ "hello world" | blake3 }} renvoie le hachage BLAKE3 de « hello world ».
Filtres HMAC
Pour créer un HMAC avec une clé secrète, utilisez l’un des filtres pris en charge suivants :
Vous souhaitez générer les URL du client, de la commande et du produit qui sont impliqués dans un flux de travail.
# 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 une liste de balises en un champ méta
Vous souhaitez convertir un ensemble de balises en un champ méta qui est une liste de champs de texte sur une seule ligne. Vous créez un flux de travail à l’aide du déclencheur Produit ajouté à la boutique et vous utilisez l’action Mettre à jour le champ méta du produit. Dans la section Valeur de l’action Mettre à jour le champ méta du produit, vous ajoutez le code Liquid suivant. Cet exemple suppose que vous ne devez définir les valeurs qu’une seule fois lors de la création du produit, et que le produit possède deux balises pertinentes : color:red et color:orange.
Exemple de code Liquid pour définir la liste d’un champ de texte sur une seule ligne.
Vous souhaitez créer un flux de travail pour envoyer un e-mail à un employé lorsqu’un client dépense plus de 500 $ pour une commande. Créez un flux de travail en utilisant le déclencheur Commande créée, définissez une condition qui est vraie si le total de la commande est supérieur à 500 $, puis utilisez l’action Envoyer un e-mail interne. Dans la section Message de l’action Envoyer un e-mail interne, vous utiliserez les variables suivantes.
Exemple d’utilisation de variables pour fournir les détails sur le client.
Entrée
Sortie
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 }}.
Veuillez envoyer une note de remerciement personnelle à Jeanne Dupont (jeanne@example.com) pour avoir passé une commande d’un montant de 763,42 $.
Rédiger un e-mail dynamique pour un produit dont le stock est faible
Vous décidez que vous devez informer un employé lorsque le stock d’un produit est faible et qu’il faut le réapprovisionner. Créez un flux de travail qui commence par le déclencheur Quantité en stock modifiée et définissez une condition qui est vraie si la quantité en stock précédente est inférieure ou égale à 10. Dans la section Message de l’action Envoyer un e-mail interne, vous utilisez les variables suivantes.
Exemple d’utilisation de variables pour fournir les détails de l’article.
Entrée
Sortie
Please reorder {{ product.title }}. Email owner@store.com to verify that they've received the purchase order.
Veuillez commander à nouveau le produit Legging taille haute – Noir. Envoyez un e-mail à owner@example.com pour vérifier que le bon de commande a bien été reçu.
Rédiger un e-mail dynamique pour informer les employés d’une commande frauduleuse
Vous souhaitez annuler les commandes qui présentent un niveau de risque élevé, mais vous préférez que vos employés se chargent manuellement de l’annulation. Créez un flux de travail qui commence par le déclencheur Commande créée et définissez une condition qui est vraie si le niveau de risque de la commande est élevé. Dans la section Message de l’action Envoyer un e-mail interne, vous utilisez les variables suivantes.
Exemple d’utilisation de variables pour fournir des informations sur une commande frauduleuse.
Entrée
Sortie
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!
Notre boutique Shopify a reçu une commande présentant un risque élevé de fraude. Nous souhaitons annuler cette commande immédiatement, avant qu’elle ne soit envoyée en production :
#1001
Dupont, Jeanne
jeanne@example.com
Veuillez confirmer le nouveau statut de la commande. Merci !
Générer les articles du panier d’une commande à l’aide d’une boucle for
Lorsqu’une commande est reçue, il peut être utile d’envoyer un message contenant les produits commandés. Pour ce faire, vous pouvez utiliser une boucle for, qui permet d’exécuter un bloc de code à plusieurs reprises. Les champs de texte qui prennent en charge les variables prennent également en charge les boucles for et l’objet forloop.
Par exemple, vous souhaitez créer un flux de travail qui renvoie une liste de tous les SKU et de toutes les quantités d’une commande. Dans la section Message de l’action Envoyer un e-mail interne, vous utilisez les variables suivantes.
Exemple d’utilisation d’une boucle for pour fournir des informations sur la commande.
Entrée
Sortie
Order summary:
{% for a in order.lineItems %}
{{a.sku}} ( {{a.quantity}} )
{% endfor %}
Récapitulatif de la commande :
8987097979 (50)
8877778887 (3)
888998898B (1)
Afficher les articles du panier d’une commande à l’aide d’une boucle for avec des informations supplémentaires
Vous décidez d’ajouter plus d’informations à l’e-mail, notamment le nom du produit, les SKU, le prix par article et les informations d’expédition du client. Dans la section Message de l’action Envoyer un e-mail interne, vous utilisez les variables suivantes.
Exemple d’utilisation d’une boucle for pour fournir des informations plus complètes sur la commande.
Entrée
Sortie
Order summary:
{% for a in order.lineItems %}
Product: {{a.title}}
SKU: {{a.sku}}
Price (per unit): ${{a.originalUnitPriceSet.shopMoney.amount}}
Quantity: {{a.quantity}}
{% endfor %}
Récapitulatif de la commande :
Produit : High Waist Leggings - Black
SKU : 8987097979
Prix (à l’unité) : 8,49 $
Quantité : 5
Produit : Athletic Socks - Blue
SKU : 888998898B
Prix (à l’unité) : 5,61 $
Quantité : 2
Afficher certains articles du panier en combinant une boucle for et une instruction if
Vous devez suivre les articles vendus qui sont fournis par un fournisseur spécifique. Dans la section Message de l’action Envoyer un e-mail interne, vous utilisez les variables suivantes et incluez une instruction if dans votre boucle for.
Exemple d’utilisation d’une boucle for et d’une instruction if pour fournir des informations sur la commande pour des fournisseurs spécifiques.
Entrée
Sortie
Acme product sold:
{% for x in order.lineItems %}
{% if x.vendor == 'acme-vendor' %}
Product name: {{x.title}}
SKU: {{x.sku}}
{% endif %}
{% endfor %}
Produit Acme vendu :
Nom du produit : High Waist Leggings - Black
SKU : 8987097979
Objets de données complexes dans Shopify Flow
Flow vous permet d’accéder à presque toutes les données qui se trouvent dans l’API GraphQL Admin. Cela inclut les objets de données complexes, tels que les listes et les objets. Cependant, il existe certaines limitations à ce que vous pouvez faire avec ces objets. Cette section décrit ces limitations et fournit des exemples sur la manière de les utiliser.
Au lieu d’appeler directement des listes et des objets, vous devez parcourir la liste en boucle et n’inclure que les champs que vous souhaitez.
Par exemple, au lieu d’appeler directement {{ order.lineItems }}, utilisez le format suivant pour appeler des champs spécifiques. Ces exemples incluent tous les champs qui seraient inclus en appelant directement la liste ou l’objet. Copiez et collez les champs dont vous avez besoin.
Texte
{% for li in order.lineItems %}
{% comment %}li.contract - omitted{% endcomment %}