Modèles Liquid
Restituez des champs de cartes dynamiques, formatez des valeurs et créez du contenu de cartes Wallet avec Liquid.
Modélisation Liquid
Liquid combine du texte fixe avec des valeurs dynamiques issues d'une Carte. The Wallet Crew utilise l'implémentation DotLiquid, ainsi que des filtres de date personnalisés et la minify balise.
Utilisez cette référence après avoir confirmé les chemins de données requis sur une Carte réelle.
Exemples concrets
Une carte de fidélité affiche un solde de points sûr et entier.
Une carte cadeau affiche son identifiant, son montant et sa date d'expiration.
Un billet d'événement transforme les données de siège en indications pour le lieu.
Confirmer les données disponibles
Chaque rendu reçoit un contexte de données. Il peut contenir des données de Carte, des données supplémentaires et des valeurs renvoyées par des fournisseurs connectés.
Inspecter Afficher les données sur une Carte réelle avant d'écrire un modèle. Cette charge utile est la source de vérité pour les chemins de variables.
Les données supplémentaires conviennent au contenu visible de la Carte. Les métadonnées prennent en charge les opérations et la segmentation. Elles ne doivent pas être considérées comme une source d'affichage du Wallet.
Pour le flux complet de mise à jour et de validation, voir Mettre à jour les données de Carte dans les modèles.
Les chemins courants incluent :
Client
firstName, lastName, address.city
Carte
serialNumber, tenantId, publicUrl, authenticationToken
Fidélité
loyalty.points, pendingLoyaltyPoints, loyalty.amounts
Carte cadeau
voucher.amount, voucher.currency, id.y2.giftCardId
Billet d'événement
ticket.name, ticket.startDate, ticket.seatNumber, ticket.entrance
Collections
y2.tickets, y2.bons.loyaltyCertificates
Valeurs personnalisées
additionalData.<key>
Les valeurs manquantes s'affichent comme une chaîne vide. Utilisez default lorsqu'un repli visible est requis.
Notions de base de la syntaxe
Utilisez {{ ... }} pour afficher une valeur. Utilisez {% ... %} pour la logique qui ne s'affiche pas d'elle-même.
Les filtres s'appliquent de gauche à droite. La notation par points suit la structure imbriquée dans la charge utile des données.
Conditions et boucles
Liquid ne considère que nil et false comme faux. Le nombre 0 et la chaîne "false" sont vrais. Comparez explicitement les nombres facultatifs.
Protégez les boucles avec une vérification de la taille de la collection. Cela évite les titres de section vides.
À l'intérieur d'une boucle, forloop.index, forloop.first, forloop.last, et forloop.length sont disponibles.
Affectations, branches et espaces
Utilisez assign pour réutiliser les valeurs calculées. Utilisez case pour les correspondances code-vers-libellé.
Utilisez {%- et -%} pour supprimer les espaces environnants. Cela permet de garder les modèles multilignes compacts dans les champs Wallet étroits.
Valeurs YAML
Mettez entre guillemets les valeurs Liquid contenant des caractères spéciaux YAML. Utilisez |- pour les valeurs multilignes.
Filtres personnalisés
Filtres de date
Tous les filtres de date analysent l'entrée comme une valeur de date ou d'heure, appliquent l'opération et renvoient un DateTimeOffset. Enchaînez-les avec | date: "format" lorsqu'une sortie sous forme de chaîne est nécessaire.
add_minutes
Ajoute le nombre de minutes spécifié.
add_hours
Ajoute le nombre d'heures spécifié.
add_seconds
Ajoute le nombre de secondes spécifié.
add_days
Ajoute le nombre de jours spécifié.
add_timespan
Ajoute un intervalle au hh:mm:ss format.
Tous les filtres de date utilisent une culture invariante pour l'analyse et le formatage.
Filtre de format
format
Applique une chaîne de format à toute IFormattable valeur telle que les nombres, les dates et les énumérations.
Cela affiche un entier groupé tel que 1,234 en culture invariante.
Cela affiche une valeur au format monétaire avec deux décimales.
Balise personnalisée
minify
Génère une URL de redirection courte à partir d'un lien de Carte généré.
La balise commence par rendre l'expression imbriquée, puis crée une URL courte via le service de redirection The Wallet Crew, et renvoie finalement la chaîne URL raccourcie.
Valider et dépanner les modèles
Une variable s'affiche vide
Un chemin manquant n'empêche pas le rendu. Il se résout en une chaîne vide. Inspectez Afficher les données sur une Carte réelle, puis utilisez default où nécessaire.
Une variable manquante produit généralement un champ vide. Validez les chemins de champ par rapport à un contexte de Carte réel avant de publier une modification de modèle.
Une date est décalée ou formatée de manière inattendue
Les dates contiennent des informations de fuseau horaire. Formatez explicitement la sortie souhaitée. Utilisez add_hours uniquement lorsqu'un décalage connu est requis.
format ignore la locale de la Carte
C'est attendu. format utilise une culture invariante. Utilisez date pour les dates sensibles à la locale. Assemblez, si nécessaire, le texte spécifique à la locale pour les nombres ou les devises dans chaque fichier de langue.
Un fichier YAML ne peut pas être analysé
Mettez entre guillemets les valeurs Liquid contenant :, {, #, ou &. Utilisez |- pour les valeurs multilignes.
Une condition se comporte de manière inattendue
Le nombre 0 et la chaîne "false" sont vrais. Comparez explicitement les valeurs numériques facultatives.
La sortie comporte des lignes vides
Utilisez des tirets de contrôle des espaces autour des balises.
La syntaxe Liquid littérale est requise
Utilisez raw et endraw.
Le modèle contient une erreur de syntaxe
Un Liquid invalide peut afficher un message d'erreur au lieu de la valeur attendue. Considérez les erreurs d'analyse comme des défauts du modèle et corrigez-les avant la publication.
Utilisez l'aperçu de la Carte dans le back-office pour tester les expressions Liquid sur de vraies données de Carte avant de déployer une modification de modèle en production.
Pour le timing du rendu et la gestion des échecs en dehors de Liquid lui-même, voir Comment une Carte est rendue.
Filtres standard
Les filtres standard DotLiquid transforment les chaînes, les nombres, les dates et les collections.
Chaînes
default
{{ loyalty.points | default: 0 }}
upcase, downcase, capitalize
{{ firstName | capitalize }}
strip, lstrip, rstrip
{{ ticket.name | strip }}
append, prepend
{{ publicUrl | append: tenantId }}
replace, remove
{{ ticket.name | replace: "VIP", "Premium" }}
truncate, truncatewords, slice
{{ id.y2.customerId | slice: 0, 4 }}
split
{{ "a,b,c" | split: "," }}
Utilisez un suffixe de troncature vide pour créer une initiale :
Nombres et collections
floor, ceil, round
{{ loyalty.points | default: 0 | floor }}
plus, minus, times, divided_by, modulo
{{ loyalty.points | divided_by: 100 | floor }}
abs, at_least, at_most
{{ balance | at_least: 0 }}
size, first, last, join
{{ tags | join: ", " }}
sort, reverse, uniq, compact
{{ items | sort | reverse }}
map, where
{{ y2.tickets | map: "ticketNumber" | join: ", " }}
Dates, URL et HTML
Le date filtre formate les valeurs de date pour la locale de la Carte.
{{ ticket.startDate | date: "D" }}
lundi 27 mai 2026
{{ ticket.startDate | date: "d" }}
27/05/2026
{{ ticket.startDate | date: "M" }}
27 mai
{{ ticket.startDate | date: "t" }}
20:00
{{ ticket.startDate | date: "yyyy-MM-dd HH:mm" }}
2026-05-27 20:00
Utilisez url_encode et url_decode pour les valeurs d'URL. Utilisez escape, escape_once, ou strip_html pour les valeurs d'e-mail HTML.
Pour la liste complète des filtres, voir la référence DotLiquid.
Recettes
Les modèles suivants répondent aux besoins courants des cartes de fidélité, des cartes cadeaux et des billets d'événement. Confirmez tous les chemins de données avant utilisation.
Cartes de fidélité
Afficher les points en toute sécurité
default évite un solde vide. floor évite les décimales indésirables.
Afficher les points en attente séparément
N'affichez la ligne en attente que lorsque des points attendent validation.
Créer un compteur de tampons récurrent
modulo réinitialise le compteur visible après chaque récompense.
Le même modèle peut sélectionner une image correspondante :
Afficher la progression vers la prochaine récompense
Calculez les points restants à partir d'un seuil modifiable.
Déduire un nom de niveau
Ce modèle fonctionne lorsque la source ne fournit qu'un solde de points.
Lister les bons disponibles
Affichez les bons au dos de la carte. Une else branche rend l'état vide plus clair.
Cartes cadeaux
Réutiliser un identifiant
Utilisez la même valeur pour les champs de code-barres et de saisie manuelle.
Afficher un montant variable
Cela utilise un montant cadeau facultatif et une solution de repli sûre.
Séparez le montant et la devise
Des champs dédiés permettent aux plateformes Wallet d'appliquer le formatage local des devises.
Définir la période de validité
Utilisez les dates sources pour l'expiration et la pertinence.
Billets d'événement
Expirer après l'événement
Une expiration le jour suivant évite les problèmes de fuseaux horaires et d'arrivées tardives.
Définir une période de pertinence
Cela aide les plateformes Wallet à afficher le billet au bon moment.
Afficher la date et l'heure de l'événement
Des champs distincts permettent à la mise en page du Wallet de donner la priorité à la date ou à l'heure.
Mapper les codes de catégorie
case convertit les codes sources en libellés lisibles et spécifiques à la langue.
Créer des indications pour le lieu
Nettoyez les champs facultatifs avant de les concaténer. Le contrôle des espaces maintient une sortie compacte.
Lister les billets sur une Carte multi-billets
Ceci est utile pour les achats groupés et les Cartes multi-événements.
Créer un lien profond authentifié
N'utilisez ce modèle que lorsque la destination prend en charge le flux d'authentification de la Carte.
FAQ
Mis à jour


Comment trouver le chemin de variable correct ?
Utilisez une vraie Carte, inspectez Afficher les données, puis validez l'expression dans l'aperçu. Cela évite de deviner les noms de champs de mémoire.