Blocs Liquid personnalisés pour les reçus imprimés

Vous pouvez utiliser un bloc Liquid personnalisé pour ajouter votre propre contenu à l’en-tête ou au pied de page d’un reçu imprimé, tel que les détails de la commande, les informations sur le client, les propriétés du produit, les champs méta et les codes-barres.

Les blocs Liquid personnalisés s’affichent sur les reçus imprimés pour les commandes finalisées en ligne et sur POS. Ils ne s’affichent pas pour les commandes qui utilisent le paiement hors ligne.

Vous pouvez ajouter un bloc Liquid personnalisé à partir de l’éditeur visuel de reçus dans votre interface administrateur Shopify. Les valeurs que vous référencez sont extraites des données du reçu lors de son impression. Par exemple, le code Liquid suivant ajoute la note de commande au reçu si elle existe :

{% if order.note %}
  <p>Order note: {{ order.note }}</p>
{% endif %}

Règles de syntaxe Liquid

Examinez les règles de syntaxe suivantes avant de créer un bloc Liquid personnalisé :

  • Les noms de variables utilisent des lettres minuscules et des traits de soulignement, un format connu sous le nom de snake_case. Par exemple, utilisez order.total_price, order.customer.display_name et order.line_items.
  • Les valeurs monétaires sont de simples nombres. Formatez-les avec le filtre money, tel que {{ order.total_price | money }}.
  • Protégez les valeurs facultatives avec une instruction if afin de ne pas imprimer de ligne vide, comme {% if order.customer.email %}{{ order.customer.email }}{% endif %}.
  • Parcourez les listes avec une instruction for, comme {% for item in order.line_items %} ... {% endfor %}.
  • Certaines balises Liquid ne sont pas prises en charge. Vous ne pouvez pas utiliser assign, capture, include, render, raw, increment ou decrement. Si votre bloc utilise une balise non prise en charge, votre reçu ne s’enregistrera pas et vous verrez une erreur.
  • Un bloc Liquid personnalisé peut contenir jusqu’à 50 Ko de code.

HTML et CSS

Vous pouvez utiliser du code HTML de base dans un bloc Liquid personnalisé pour structurer votre contenu, par exemple <p>, <br>, <strong>, <em>, des titres, des listes et des liens. Votre contenu utilise les polices et tailles existantes du reçu.

Vous ne pouvez pas utiliser de code CSS pour modifier l’apparence d’un reçu. Les blocs <style> et les attributs style ne sont pas pris en charge, de sorte qu’un bloc Liquid personnalisé ne peut pas modifier le style ni masquer du contenu ailleurs sur le reçu. Les balises <script>, les gestionnaires d’événements tels que onclick et les liens javascript: ne sont pas non plus pris en charge.

Si votre bloc contient du code HTML non pris en charge, votre reçu ne s’enregistrera pas et vous verrez une erreur. Supprimez le code HTML non pris en charge, puis enregistrez à nouveau.

Variables et objets

Un bloc Liquid personnalisé peut référencer les objets et variables suivants. Certaines valeurs ne figurent pas sur le reçu par défaut, un bloc Liquid personnalisé constitue donc un moyen de les ajouter.

Variables de niveau supérieur

Les variables de niveau supérieur suivantes sont disponibles dans un bloc Liquid personnalisé.

Description des variables de niveau supérieur disponibles pour un bloc Liquid personnalisé
VariableDescription
order
La commande en cours d’impression.
shop
La boutique.
location
Le point de vente physique.
settings
Les paramètres d’affichage du reçu, qui sont les options d’activation configurées dans l’éditeur.
purchased_gift_cards
Les cartes-cadeaux achetées dans cette commande.
staff_member_description
L’employé attribué, lorsque l’affichage des employés est activé.
locale
Les paramètres régionaux du reçu, tels que en.
is_pickup
Indique si la commande est une commande avec option de collecte.
pickup_location
Le point de collecte, le cas échéant.

Objet de commande

Description de l’objet de commande
PropriétéDescription
name
Le nom de la commande, tel que #1001.
created_at
L’horodatage de la commande. À utiliser avec le filtre date.
note
La note de commande.
subtotal_price
Le sous-total. À formater avec le filtre money.
total_price
Le total. À formater avec le filtre money.
shipping_price
Les frais d’expédition facturés. À formater avec le filtre money.
total_tip_received
Le total du pourboire. À formater avec le filtre money.
balance_due
Le montant restant à payer. À formater avec le filtre money.
change_due
La monnaie rendue. À formater avec le filtre money.
taxes_included
Indique si la taxe est incluse dans les prix.
receipt_number
Le numéro du reçu.
barcode_content
Le contenu à encoder dans un code-barres.
qr_code_content
Le contenu à encoder dans un code QR. À utiliser avec le filtre qrcode.
line_items
Les articles achetés. Les propriétés de chaque article sont répertoriées dans l’objet d’article de la commande.
transactions
Les paiements. Les propriétés de chaque paiement sont répertoriées dans l’objet de transaction.
discounts
Les réductions appliquées à la commande. Les propriétés de chaque réduction sont répertoriées dans l’objet de réduction.
tax_lines
Les lignes de taxes. Les propriétés de chaque ligne de taxes sont répertoriées dans l’objet de ligne de taxes.
refunds
Les remboursements sur la commande.
shipping_address
L’adresse de livraison. Les propriétés de l’adresse sont répertoriées dans l’objet adresse.
customer
Les détails du client, répertoriés dans l’objet client.
metafields
Les champs méta de la commande.

Objet client

L’objet order.customer contient les détails du client.

Description de l’objet client
PropriétéDescription
display_name
Le nom d’affichage du client.
first_name
Le prénom du client.
last_name
Le nom de famille du client.
email
L’adresse e-mail du client.
phone
Le numéro de téléphone du client.
default_address
L’adresse par défaut du client.
metafields
Les champs méta du client.

Objet d’article de la commande

Chaque article de order.line_items contient les propriétés suivantes.

Description de l’objet d’article de la commande
PropriétéDescription
name
Le nom du produit ou de la ligne.
variant_title
La variante, par exemple Grand / Bleu.
sku
Le SKU.
vendor
Le fournisseur.
quantity
La quantité.
price
Le prix unitaire. À formater avec le filtre money.
total_price
Le total de la ligne. À formater avec le filtre money.
discounted_total_price
Le total de la ligne après réductions. À formater avec le filtre money.
discounted_unit_price
Le prix unitaire après réductions. À formater avec le filtre money.
discounts
Les réductions appliquées à la ligne.
selling_plan_name
Le nom de l’abonnement ou du forfait de vente, le cas échéant.
staff_member_description
L’employé attribué à la ligne.
custom_attributes
Les propriétés de l’article de la commande, accessibles par clé.
product_metafields
Les champs méta du produit, accessibles par clé.
variant_metafields
Les champs méta de la variante, accessibles par clé.

Objet transaction

Chaque paiement dans order.transactions contient les propriétés suivantes. Le crédit en magasin dépensé pour la commande est répertorié comme un paiement nommé Store credit (Crédit en magasin). Le solde de crédit en magasin restant du client n’est pas disponible sous forme de variable.

Description de l’objet transaction
PropriétéDescription
name
Le nom du paiement, tel que Visa, espèces ou crédit en magasin.
payment_type
Le code de type de paiement.
amount
Le montant. À formater avec le filtre money.
kind
Le type de transaction.
status
Le statut de la transaction.
credit_card_number
Le numéro de carte masqué, le cas échéant.
created_at
L’horodatage de la transaction.
additional_details
Lignes de détails de paiement supplémentaires.

Objet boutique

L’objet shop contient les détails de la boutique.

Description de l’objet boutique
PropriétéDescription
name
Le nom de la boutique.
domain
Le domaine de la boutique.
currency
La devise de la boutique.
id
L’ID de la boutique.

Objet emplacement

L’objet location contient les détails de l’emplacement de vente au détail.

Description de l’objet emplacement
PropriétéDescription
name
Le nom de l’emplacement.
address1
La première ligne d’adresse.
address2
La deuxième ligne d’adresse.
city
La ville.
province
La province ou l'État.
province_code
Le code de la province ou de l'État.
zip
Le code postal.
country
Le pays.
phone
Le numéro de téléphone.
metafields
Les champs méta de l’emplacement.

Objet adresse

Une adresse, telle que order.shipping_address ou order.customer.default_address, contient les propriétés suivantes.

Description de l’objet adresse
PropriétéDescription
company
Le nom de l’entreprise.
name
Le nom du destinataire.
address1
La première ligne d’adresse.
address2
La deuxième ligne d’adresse.
city
La ville.
province
La province ou l'État.
province_code
Le code de la province ou de l'État.
zip
Le code postal.
country
Le pays.
country_code
Le code du pays.
phone
Le numéro de téléphone.

Objet réduction

Chaque réduction dans order.discounts ou item.discounts contient les propriétés suivantes.

Description de l’objet réduction
PropriétéDescription
description
La description de la réduction.
amount
Le montant de la réduction. À formater avec le filtre money.
percentage
Le pourcentage de réduction.

Objet ligne de taxe

Chaque ligne de taxe dans order.tax_lines contient les propriétés suivantes.

Description de l’objet ligne de taxe
PropriétéDescription
title
Le titre de la taxe.
rate
Le taux de taxation sous forme décimale.
rate_percentage
Le taux de taxation en pourcentage.
price
Le montant de la taxe. À formater avec le filtre money.
taxable_amount
Le montant imposable. À formater avec le filtre money.

Objet carte-cadeau

Chaque carte-cadeau dans purchased_gift_cards contient les propriétés suivantes.

Description de l’objet carte-cadeau
PropriétéDescription
code
Le code de la carte-cadeau.
masked_code
Le code masqué de la carte-cadeau.
balance
Le solde de la carte-cadeau. Formatez-le avec le filtre money.
created_at
L’horodatage de la carte-cadeau.
qr_code_content
Le contenu à encoder dans un code QR.

Champs méta et propriétés

Les champs méta et les propriétés d’articles se présentent sous deux formes.

Les champs méta et les propriétés d’articles sont associés à des clés. Accédez à une valeur directement par sa clé :

{{ item.product_metafields.care_instructions }}
{{ item.custom_attributes.engraving }}

Les champs méta de commande et de client sont des listes. Parcourez-les à l’aide d’une boucle :

{% for m in order.metafields %}
  {{ m.namespace }}.{{ m.key }}: {{ m.value }}
{% endfor %}

Les clés sont normalisées au format snake_case. Une clé telle que Care Instructions ou careInstructions est accessible via care_instructions. Référencez toujours les valeurs associées à des clés en minuscules avec des traits de soulignement.

La disponibilité des champs méta de commande et de client dépend de la présence de ces champs méta dans l’enregistrement.

Filtres Liquid

Vous pouvez utiliser des filtres pour formater les informations de votre bloc Liquid personnalisé. Pour appliquer un filtre, ajoutez une barre verticale |, puis le filtre dans la balise de sortie Liquid, par exemple, {{ order.total_price | money }}.

Les filtres Liquid standard fonctionnent également. Pour en savoir plus sur les filtres Liquid, consultez la Référence des filtres.

Description des filtres disponibles pour un bloc Liquid personnalisé
FiltreExempleDescription
money
{{ order.total_price | money }}
Formate un montant dans la devise du reçu.
date
{{ order.created_at | date: '%B %e, %Y' }}
Formate une date ou une heure.
percent
{{ tax_line.rate | percent }}
Formate une décimale sous forme de pourcentage, par exemple 0,2 devient 20 %.
t
{{ 'receipt.total' | t }}
Renvoie un libellé traduit.
barcode
{{ order.barcode_content | barcode }}
Génère un code-barres.
qrcode
{{ order.qr_code_content | qrcode }}
Génère un code QR.

Exemples de blocs Liquid personnalisés

Les exemples suivants ajoutent du contenu qui ne figure pas sur un modèle de reçu imprimé par défaut.

Pour ajouter la note de commande si elle existe, utilisez le code Liquid suivant :

{% if order.note %}<p>Note: {{ order.note }}</p>{% endif %}

Pour ajouter le SKU à côté de chaque article, utilisez le code Liquid suivant :

{% for item in order.line_items %}
  <p>{{ item.name }} — {{ item.sku }} ×{{ item.quantity }}</p>
{% endfor %}

Pour ajouter une propriété d’article, comme une gravure, utilisez le code Liquid suivant :

{% for item in order.line_items %}
  {% if item.custom_attributes.engraving %}
    <p>{{ item.name }} — Engraving: {{ item.custom_attributes.engraving }}</p>
  {% endif %}
{% endfor %}

Pour ajouter un champ méta de produit, tel que des instructions d’entretien, utilisez le code Liquid suivant :

{% for item in order.line_items %}
  {% if item.product_metafields.care_instructions %}
    <p>{{ item.name }}: {{ item.product_metafields.care_instructions }}</p>
  {% endif %}
{% endfor %}

Pour ajouter un champ méta de client, utilisez le code Liquid suivant :

{% for m in order.customer.metafields %}
  {% if m.key == 'loyalty_tier' %}<p>Loyalty tier: {{ m.value }}</p>{% endif %}
{% endfor %}

Pour ajouter un code QR renvoyant à la commande, utilisez le code Liquid suivant :

{{ order.qr_code_content | qrcode }}