Skip to main content
Liquid est un langage de template pris en charge par OneSignal pour personnaliser les messages sur tous les canaux, y compris l’e-mail, le push, les SMS, l’in-app et les Live Activities. Il utilise des balises, des filtres et des conditionnels pour personnaliser dynamiquement le contenu des messages. Pour en savoir plus sur la syntaxe Liquid, consultez la documentation Liquid officielle.

Syntaxe de base

Liquid utilise deux structures de syntaxe principales :
  1. Balises de sortie : {{ ... }} — Affiche les données d’une variable ou d’un objet.
  2. Balises logiques : {% ... %} — Exécute des instructions conditionnelles ou des boucles.

Conditionnels

Opérateurs

  • ==, !=, >, <, >=, <=
  • and, or
  • contains (chaîne ou tableau)
liquid

if, elsif, else

liquid

unless

liquid

Filtres

Appliquez des filtres en utilisant {{ variable | filter }} pour ajuster la façon dont les données sont affichées.

default

Attribue une valeur par défaut si la propriété est vide ou n’existe pas.
liquid

date

Le filtre date convertit un timestamp en un autre format de date. Le format de cette syntaxe est le même que strftime. L’entrée utilise le même format que la méthode Time.parse de Ruby. Définissez les dates comme un timestamp unix en secondes avec des tags. Cela permet d’utiliser à la fois la personnalisation avec la syntaxe Liquid et la segmentation avec les Opérateurs de temps. Par exemple, un tag pourrait ressembler à : bill_due : 1687968776
liquid
Result
liquid
Result
Le formatage de date fonctionne sur les chaînes si elles contiennent des dates bien formatées.
liquid
Result
Pour obtenir l’heure actuelle, passez le mot spécial now (ou today) avec le filtre date.
liquid
Result
L’heure actuelle sera affichée dans le message en fonction du moment où le message est envoyé au destinataire. Si vous testez le message, vous verrez l’heure actuelle comme étant celle de l’envoi du message de test.

capitalize

Ce filtre met en majuscule le premier caractère d’une chaîne et convertit les caractères restants en minuscules.
liquid
Result

round

Ce filtre arrondit un nombre à l’entier le plus proche ou, si un nombre est passé en argument, à ce nombre de décimales.
liquid
Result

pluralize

Ce filtre retourne la forme singulière ou plurielle d’une chaîne en fonction d’un nombre donné. Le nombre doit être un nombre entier et peut être fourni sous forme de chaîne. Les formes singulière et plurielle d’une chaîne doivent être fournies.
liquid
Result

Itération

Boucles for

Exécute à plusieurs reprises un bloc de code. Pour une liste complète des attributs disponibles dans une boucle for, consultez la documentation de la boucle for Liquid.
liquid
Request Body
Result
Bien que puissante et flexible, l’utilisation de boucles for dans la syntaxe Liquid peut entraîner de mauvaises performances de livraison de notifications dans certains cas rares. Soyez attentif à votre utilisation des boucles for. Notez également que nous empêchons l’utilisation de boucles for dans quelques champs du canal Push : contents, headings, subtitle, apns_alert et url

limit & offset

Limite la boucle au nombre d’itérations spécifié. Par exemple, si vous voulez uniquement afficher 4 produits dans un message, vous pouvez utiliser Limits et Offsets pour spécifier le nombre de produits affichés.
Data
liquid
Result
Pour commencer la boucle à l’index spécifié, ajoutez une valeur offset :
Data
liquid
Result

where

Crée un tableau incluant uniquement les objets avec une valeur de propriété donnée, ou toute valeur vraie par défaut. Dans cet exemple, supposons que vous ayez une liste de produits et que vous souhaitiez afficher vos produits de cuisine séparément. En utilisant where, vous pouvez créer un tableau contenant uniquement les produits ayant un type de kitchen.
Data
liquid
Result

Manipulation de chaînes

Appliquez des filtres de chaîne pour ajuster la façon dont les valeurs de balises ou les chaînes en ligne sont affichées dans les messages.

FAQ

Pourquoi la substitution ne fonctionne-t-elle pas ?

  • Les messages in-app ne prennent pas en charge la substitution de propriétés.
  • La substitution de tags ne fonctionne pas lors de l’utilisation de « Send Test Message ».
  • Les clés de tags doivent être alphanumériques, ou utiliser _ et - (pas de points ni d’espaces).
  • La substitution n’apparaît pas en mode aperçu — envoyez un vrai message pour tester.

Quand dois-je utiliser default plutôt que if/else ?

Utilisez le filtre default lorsque seule la valeur de la variable nécessite un fallback et que le texte environnant reste le même.
liquid
Result (name = "Jon")
Result (name est vide)
Utilisez la logique conditionnelle if/else lorsque le texte environnant, la ponctuation ou la structure de la phrase doit également changer selon que la variable existe ou non.
liquid
Result (name = "Jon")
Result (name est vide)
N’utilisez pas default lorsque la structure de la phrase change. Par exemple, {{ name | default: "Shop your favorites" }}, shop your favorites rendrait « Shop your favorites, shop your favorites » lorsque le nom est vide. Si le fallback change plus que juste la variable, utilisez if/else.

Comment contrôler les espaces blancs et les sauts de ligne ?

Utilisez des tirets : {{- ... -}}, {%- ... -%} pour supprimer les espaces blancs environnants. Consultez Contrôle des espaces blancs pour plus de détails.

Comment gérer le contenu généré par l’utilisateur ?

Enveloppez le texte généré par l’utilisateur dans {% raw %} et {% endraw %} pour empêcher l’analyse Liquid. Consultez syntaxe “raw”.

Pages associées

Personnalisation des messages

Vue d’ensemble de toutes les options de personnalisation, y compris Liquid, Data Feeds et les événements personnalisés.

Data Feeds

Récupérez des données en temps réel depuis vos API dans les messages au moment de l’envoi.

Balises

Stockez des paires clé-valeur sur les utilisateurs pour la segmentation et la personnalisation Liquid.

Modèles

Créez des modèles de messages réutilisables avec la personnalisation Liquid intégrée.