Ressources Hosteur

Explorons ensemble les technologies de demain

  1. Accueil
  2.  > 
  3. HWS
  4.  > 
  5. Ressources
  6.  > 
  7. Rubrique Aide Hosteur


   Votre espace client
   Gestion des services
   FAQ
Sommaire FAQ
   FAQ FlexOne
   Hosteur Emailing
TRANSACTIONNEL Comment personnaliser vos emails en utilisant des attributs de contacts Conditions d’affichage dans l’éditeur Drag & Drop Langage de template utilisé dans HOSTEUR Emailing
   Hosteur Ragnarokkr
Menu Ragnarokkr RAGNARØKKR Marketplace
Langage de template utilisé dans HOSTEUR Emailing

Langage de template utilisé dans HOSTEUR Emailing

 

Avec HOSTEUR Emailing, vous pouvez envoyer des emails dont le contenu est dynamique. Vous pouvez aussi faire en sorte que le contenu qui s’affichera dans vos emails change automatiquement selon le destinataire. Cela peut être accompli grâce à l’utilisation de notre langage de template.

 

Conseils :

 

Le langage de template comprend :

  • Des variables et des filtres : lors de l’envoi de l’email, ils seront changés par des valeurs particulières ; ils sont délimités par {{ ... }}
  • Des tags : ils vous permettront contrôler votre contenu, c’est-à-dire ce qui s’affichera et comment il s’affichera ; ils sont délimités par {% ... %}

 

Remarque : grâce au langage de template, vous pourrez donc faire des modifications au niveau de l’objet de l’email, de l’en-tête, des contenus des tags HTML et du champ « à » (destinataire). Dans les templates, le contenu HTML est échappé de façon automatique par défaut, l’utilisation du tag autoescape (que nous verrons un peu plus bas) vous permettra de désactiver cette option.

 

 

 

1. Variables

Nous pouvons citer trois types de variables : les variables prédéfinies, les attributs de contacts et les paramètres transactionnels.

 

1.1. Les variables prédéfinies

{{ mirror }}

Insère un lien qui permet de visualiser votre email dans une page web.

 

Il n’est pas obligatoire d’utiliser cette variable.

Elle est le plus souvent positionnée en haut de l’email.

 

Ex : Cliquez ici pour visualiser ce message dans votre navigateur.

 

{{ unsubscribe }}

Insère un lien pour se désabonner de vos emails.

 

Les emails non transactionnels envoyés via HOSTEUR Emailing doivent tous contenir un lien de désabonnement.

En général, cette variable est placée en bas de page de l’email.

 

Ex : Se désabonner de nos emails

 

{{ update_profile }}

Insère un lien qui permet à vos contacts de mettre à jour leurs informations.

 

Vous pouvez insérer un lien vers le formulaire de mise à jour dans les paramètres de votre campagne.

Cette variable est fréquemment positionnée au bas de l’email.

 

Ex : Mettre à jour vos informations.

 

 

 

1.2. Attributs de contacts

Les variables de ce type sont de la forme {{ contact.attributeNAME }} où attributeNAME représente le nom de l’attribut de contact (il doit être identique à celui qui se trouve dans votre page de contacts), toujours écrit en MAJUSCULES et ne doit contenir aucun espace.

Par exemple, si vous voulez afficher le prénom de votre contact et que le nom de l’attribut correspondant est PRENOM, il faut utilisez {{ contact.PRENOM }}.

 

Dans le cas où le nom de l’attribut comporte un tiret (ce qui n’est pas conseillé), la variable devra être écrite comme suit :

{{ contact|key:"attributeNAME" }}

Par exemple, si le nom de l’attribut de contact est CELL-PHONE, utilisez {{ contact|key:"CELL-PHONE" }}.

 

Si vous voulez savoir comment créer un nouvel attribut, allez à la documentation « Création d'un attribut de contact ».

 

1.3. Paramètres transactionnels

La syntaxe de ces variables est la suivante : {{ params.parameterNAME }} où parameterNAME  est le nom du paramètre transactionnel (il doit être semblable à celui dans l’API).

Donc, si vous voulez intégrer une liste de vos produits par exemple et que le nom du paramètre transactionnel est PRODUITS, mettez {{ params.PRODUITS }}.

 

Remarques :

  • Quand vous envoyez un email de test, les variables des paramètres transactionnels resteront vierges. Les variables des attibuts de contacts s’afficheront comme elles ont été écrites dans le code du template, elles ne seront donc pas changées par les valeurs spécifiques correspondantes au destinataire.
  • L’utilisation de tiret ou tout autre caractère spécial dans les noms de variables ou paramètres n’est pas conseillée. Toutefois, si vous n’avez pas le choix, utilisez la forme suivante : {{ params|key:"parameter-NAME" }}. Il est possible d’imbriquer ce filtre plusieurs fois par exemple {{ params|key:"MY-PRODUCT"|key:"MY-PRODUCT-NAME" }}.

 

Vous pouvez aussi accéder à un élément d’un tableau en mentionnant son ID comme suit :

{{ params.parameterARRAY.ID.parameterNAME }}

Exemple : {{ params.PRODUCTS.2.NOMPRODUIT }}

 

 

 

2. Tags

Voici les tags les plus utilisés dans les templates : if, for, autoescape.

 

2.1. if

En utilisant le tag {% if %}, vous pourrez ajouter, supprimer ou modifier du contenu dans votre template.

if

Permet de vérifier si une valeur est vraie ou si un tableau n’est pas vide.

 

Ex1 :

{% if contact.ACTIVE %} Félicitations ! Vous avez atteint votre objectif ce mois-ci.{% endif %}

 

Ex2 :

{% if params.tutors %}
The following tutors are available to help you :


    {% for tutor in params.tutors %}
  1. {{ tutor.name }}

  2. {% endfor %}

{% endif %}

 

==

Permet de vérifier si une expression est vraie.

 

Ex1 :

{% if coupon == "WELCOME" %}

Bienvenue sur notre liste ! Code de réduction : WELCOME10


{% endif %} 

 

Ex2 :

{% if contact.DONOR == true %}
Thank you for your support!
{% endif %}

 

if, in

Permet de vérifier si une valeur (sous-chaîne) existe au sein d’une chaîne ou si une variable existe dans un tableau.

 

Ex1 :

{% if “@exemple.com" in "paul@exemple.com" %}
Ceci apparaît puisque "@exemple.com" est une sous-chaîne de "paul@example.com"
{% endif %}

 

Ex2 :

{% if "Piano" in params.types %}
Attention ! Vous avez commandé des objets lourds. Vous devez être présent lors de la livraison de votre commande.
{% endif %}

 

not

Permet de vérifier les valeurs fausses.

 

Ex :

{% if not user.subscribed %}

Vous ne faites pas encore partie de nos membres VIP. Inscrivez-vous ici.


{% endif %}

 

and / or

Permet d’utiliser plusieurs conditions.

 

Ex1 :

{% if temperature > 25 and temperature < 40 %}

Quelle chaleur ! Recevez un bon de réduction de 25% sur nos glaces, utilisable uniquement aujourd'hui.


{% endif %}

 

Ex2 :

{% if contact.LANGUE == “FR” and contact.PAYS == “Canada” %}
{% endif %}

 

Ex3 :

{% if contact.PAYS == “USA” or contact.PAYS == “Canada” %}
{% endif %}

 

elif, else

Permet d’utiliser plusieurs alternatives.

 

Ex1 :

{% if contact.GENRE == “Homme” %} Bonjour Monsieur {{ contact.NOM }},
{% elif contact.GENRE == “Femme” %} Bonjour Madame {{ contact.NOM }},
{% else %} Bonjour, {% endif %}

 

Ex2 :

{% if event.paid %} Votre réservation est confirmée. Merci pour votre paiement.
{% elif event.registered %} Votre réservation est confirmée. Veuillez passer au paiement avant le 15 Juin.
{% else %} Vous avez encore le temps de réserver votre place ! Cliquez ici.
{% endif %}

 

 

Conseil : vous pouvez utiliser des comparaisons avec le tag {% if %} si les valeurs des variables sont des chaînes de caractères (qui doivent être mises entre guillemets). Si les valeurs sont de type « float » (valeurs avec un nombre décimal à la place d’un nombre entier), les comparaisons avec ce tag pourraient donner de faux résultats.

 

2.2. for

Associé à vos paramètres transactionnels, le tag {% for %} s’avère être très pratique.

for, in

Pour afficher une liste.

 

Ex :


       {% for user in params.USERS %}
           
  • {{ user.username }}

  •    {% endfor %}

 

else

Pour exécuter un bloc de remplacement si la séquence est vide.

 

Ex :


       {% for user in params.USERS %}
           
  • {{ user.username }}

  •    {% else %}
           
  • aucun utilisateur trouvé

  •    {% endfor %}

 

  • Affiche « aucun utilisateur trouvé »

 

reversed

Pour inverser l’ordre de saisie des éléments d’une séquence.

 

Ex : {% for country in params.countries reversed %} {% end for %}

 

  • Affiche une liste des pays dans l’ordre inverse de la liste d’origine

 

 

 

2.3. forloop

Il est possible d’insérer des variables du type {{ forloop.*** }} dans une boucle {% for %}.

forloop.Counter

Correspond à un nombre entier qui représente le nombre d'entrées dans la boucle. Le compte démarre à 1 : après la première entrée dans la boucle, forloop.Counter est égal à 1.

 

Cette expression peut être utilisée pour numéroter les éléments d'une boucle :

 

{% for product in params.products %}
{{ forloop.Counter }}- {{ product.name }}

{% endfor %}

 

  • Affichera une liste telle que celle-ci :

1- Produit A
2- Produit B
3- Produit C, etc.

 

forloop.Counter0

Itération actuelle de la boucle (en commençant par 0).

 

forloop.Revcounter

Correspond à un nombre entier qui représente le nombre d'éléments restants dans la boucle. Après la première entrée dans la boucle, forloop.Revcounter est égal au nombre total d'éléments dans la séquence traversée. Après la dernière entrée dans la boucle, forloop.Revcounter est égal à 1.

 

forloop.Revcounter0

Nombre d'itérations jusqu'à la fin de la boucle (en terminant par 0)

 

forloop.First

La valeur booléenne indique True s'il s'agit du premier passage dans la boucle.

 

Cette fonctionnalité est particulièrement pratique pour appliquer un format spécifique au premier élément d'une liste, comme par exemple pour appliquer un filtre « upper » (décrit dans la partie « 3. Filtres » plus bas) uniquement au premier élément de cette liste de produits :

 

{% for product in params.products %}
{{ forloop.Counter }}. {% if forloop.First %} {{ product.name|upper }}

{% else %} {{ product.name }}

{% endif %} - {{ product.price }}
{% endfor %}

 

  • Affiche une liste de produits telle que celle-ci :

1. PREMIER PRODUIT - 6,00 €
2. Deuxième produit - 3,00 €
3. Troisième produit - 5,00 €

 

forloop.Last

La valeur booléenne indique True s'il s'agit du dernier passage dans la boucle. Un caractère de séparation (comme « , » ou « | ») est souvent utilisé dans une liste d'éléments.

 

forloop.Parentloop

Référence l'objet forloop par rapport à une boucle parente, en cas de boucles imbriquées.

 

Ex :

{% for country in countries %}


{% for city in country.city_list %}





{% endfor %}
Pays #{{ forloop.Parentloop.counter }} Ville #{{ forloop.Counter }} {{ city }}

{% endfor %}

 

 

Remarque : vous devez bien respecter la casse pour les noms de ces variables de boucles.

 

2.4. autoescape

Dans HOSTEUR Emailing, les contenus HTML et JS de toutes les variables sont échappés par défaut. En d’autres mots, ils seront considérés comme du texte.

Donc si vous saisissez

HOSTEUR

comme contenu de votre variable dans le code de votre template, cela s’affichera comme tel dans votre email. Vous n’aurez pas le titre « HOSTEUR » au format h1 comme prévu.

 

L’utilisation du tag autoescape vous permet de désactiver l’option d’échappement automatique appliquée à un bloc. N’oubliez pas le tag endautoescape à la fin.

Prenons comme exemple : {% autoescape %}{{ params.my_html }}{% endautoescape %}.

Nous avons ainsi désactivé l’auto-échappement pour la variable {{ params.my_html }}. Si le contenu de cette variable est

HOSTEUR

, le titre « HOSTEUR » s’affichera bien au format h1.

 

Il existe tout de même des cas exceptionnels. Il se peut que le code définissant certaines variables ou l’utilisation du filtre safe désactive déjà leur échappement et il n’est donc plus nécessaire d’appliquer {% autoescape off %}.

 

2.5. verbatim

Le tag {% verbatim %} vous permet d’afficher les doubles accolades {{ }} telles quelles dans votre email. Elles ne seront donc pas considérées comme un élément de langage de template.

Exemple : si nous voulons afficher dans notre email le texte {{ Afficher les accolades }} tel que nous l’avons saisi, nous procéderons comme suit :

{% verbatim %}
{{ Afficher les accolades }}
{% endverbatim %}

 

 

 

3. Filtres

Vous pouvez appliquer des filtres à vos variables en mettant une barre verticale (|) entre les deux. Il est possible de combiner plusieurs filtres, et le résultat du filtre précédent sera appliqué au filtre suivant.

Voici une liste des filtres les plus utilisés.

 

Modifications du format des mots

capfirst

Applique une majuscule au premier caractère.

 

Le premier caractère sera en majuscule, et tous les autres caractères seront en minuscules.

 

{{ contact.NAME|capfirst }}

 

  • jean dupont deviendra Jean dupont

 

title

Applique une majuscule à chaque début de mot.

 

Le premier caractère de chaque mot sera en majuscule, les autres caractères seront en minuscules.

 

{{ contact.NAME|title }}

 

  • jean dupont deviendra Jean Dupont

 

upper

Applique des majuscules à tous les caractères.

 

{{ contact.NAME|upper }}

 

  • jean dupont deviendra JEAN DUPONT

 

lower

Applique des minuscules à tous les caractères.

 

{{ contact.NAME|lower }}

 

  • JEAN DUPONT deviendra jean dupont

 

trunchars

Tronque une chaîne de caractères si celle-ci dépasse le nombre de caractères spécifié.

 

Les chaînes tronquées se termineront par « … »

 

{{ value|truncatechars:7 }}

 

  • Si « value » = anniversaire, la valeur deviendra anniver…

 

 

Modifications du format des nombres

floatformat

Arrondit les valeurs float de votre paramètre ou attribut de contact à la décimale spécifiée.

 

Pour fonctionner convenablement, les valeurs doivent être traitées en tant que nombre, et non en tant que chaîne de caractères. Les valeurs ne doivent pas être comprises entre guillemets, comme dans “valeur”.

 

Si votre template comprend {{ contact.BALANCE }} et que la valeur du résultat est égale à 52,630000, celle-ci peut être arrondie à la décimale « n » comme ceci :
{{ contact.BALANCE | floatformat: n}}

 

Ex :

{{ contact.BALANCE | floatformat: 2}} prendra la forme 52,63 au lieu de 52,630000
 

{{ contact.BALANCE | floatformat: 0}} prendra la forme 52 au lieu de 52,630000

 

 

Modifications du format des dates

time_parse

Convertit le format de la date (en tant que chaîne de caractères) en un format standard qui peut être utilisé avec d'autres filtres.

 

Utilisez le format actuel de la date en tant qu'argument : indiquez la date et l'heure exactes de Monday January 2 15:04:05 -0700 MST 2006 au format qui s'afficherait si cette valeur était utilisée :

  • {{ params.my_date|time_parse:"15:04 02/01/2006” }}
  • {{ params.my_date|time_parse:"Monday 02 January 2006” }}

 

Remarque : les jours et les mois doivent être en anglais pour être reconnus.

 

Si votre chaîne est au format RFC3339, vous pouvez utiliser le paramètre dédié time_parse_rfc3339 sans argument.

 

date

Saisit la date au format spécifié.

 

Définissez votre propre format en indiquant comment la date et l'heure de référence, définies à Mon Jan 2 15:04:05 - 0700 MST 2006, s'afficheraient selon le format que vous souhaitez utiliser.

 

Vous devez ajouter une date à ce filtre.

Vous obtenez une date à partir d'une chaîne de caractères qui utilise le filtre time_parse.

 

Ex :

{{ "14:01 01/06/2018"|time_parse:"15:04 02/01/2006"|date:"Mon Jan 2 15:04:05 2006"}}

 

  • Ceci donnera : Fri Jun 1 14:01:00 2018

 

Remarque : les jours et les mois doivent être en anglais pour être reconnus.

 

 

 

Remarques :

  • Les jours et les mois abréviés doivent être en anglais ;
  • Si vous n’avez indiqué aucune valeur, la valeur attribuée sera 0 ;
  • Par défaut, le fuseau horaire défini sera UTC ;
  • Les mots clés am / pm peuvent être employés ;
  • Vous pouvez utiliser les mots clés MST, UTC, CET, etc ou les nombres +0100 ou -0100 (pour le format UTC) pour la définition des fuseaux horaires.

 

 

Autres filtres

first

Retourne le premier élément d'une séquence, d'un mappage ou d'une chaîne de caractères.

 

Si votre template comprend {{params.array|first}}

 

Et si votre demande de l'API comprend : 

“params” :
{
“array” : [ 1,2,3,4 ]
}

 

  • Cela donnera 1

 

join

Retourne une chaîne de caractères qui regroupe les éléments d'une séquence.

 

Par défaut, le séparateur des éléments est une chaîne vide. Vous pouvez définir un autre séparateur à l'aide du premier paramètre optionnel.

 

  • {{ [1, 2, 3]|join }} donnera la forme 123
  • {{ [1, 2, 3]|join('|') }} donnera la forme 1|2|3

  

 

last

Retourne le dernier élément d'une séquence, d'un mappage ou d'une chaîne de caractères.

 

  • {{ [1, 2, 3, 4]|last }} donnera 4

 

lenght

Retourne le nombre d'éléments d'une séquence ou d'un mappage, ou la longueur d'une chaîne de caractères.

 

{% if users|length > 10 %}
   ...
{% endif %}

 

safe

Permet d'indiquer qu'une chaîne de caractères ne nécessite pas d'échappement HTML avant l'affichage du résultat.

 

{{ params.htmltest | safe }}

"params" :{HtmlTest: "

Ceci est un test.

"}

 

  • Ceci affichera un paragraphe formaté dans l'email du destinataire : Ceci est un test. 

 

{{ params.htmltest }}

"params" :{HtmlTest: "

Ceci est un test.

"}

 

  • Ceci s’affichera comme suit dans l'email du destinataire :

    Ceci est un test.

 

slice

Extrait certains éléments d’une séquence, d’un mappage ou d’une chaîne de caractères.

 

Ce filtre peut être configuré pour :

 

A. Passer en boucle uniquement les « n » premiers éléments d'un groupe.

 

B. Passer en boucle les éléments entre deux positions spécifiques (« n » et « m ») dans le groupe.

 

Dans ces deux cas, n'oubliez pas qu'à chaque élément d'un groupe est attribué un numéro de position unique, en commençant par « 0 » à la première position.

 

C. Le filtre peut aussi être configuré pour passer en boucle les éléments entre des éléments spécifiques d'un groupe.

 

 

Ex : imaginons que le groupe contient les éléments suivants : ["a","b","c","d","e","f","g","h",...]

 

A.
{% for product in params.products|slice:’:5’ %}
{{ product.name }} - {{ product.price }}
{% endfor %}
passera en boucle les 5 premières positions (0-4), c'est-à-dire : ["a","b","c","d","e"]

 

B.
{% for product in params.products|slice:’2:3’ %}
{{ product.name }} - {{ product.price }}
{% endfor %}
passera en boucle les positions (2-3), c'est-à-dire : ["c","d"]

 

C.
{% for product in params.products|slice:’b:d’ %}
{{ product.name }} - {{ product.price }}
{% endfor %}
passera en boucle les éléments spécifiés  : ["b","c","d"]

 

 

 

 

 

Notre langage de template se base sur le langage de template de Django. Vous pouvez vous référer aux ressources Django pour en savoir plus : https://djangobook.com/mdj2-django-templates/

 

Voici tous les tags et tous les filtres pris en charge par le langage de template que nous utilisons :

Tags : autoescape, comment, cycle, filter, firstof, for, if, ifchanged, now, set, spaceless, templatetag, with

Filtres (référence : https://docs.djangoproject.com/fr/3.0/ref/templates/builtins/#linebreaks) : escape, safe, escapejs, add, addslashes, capfirst, center, cut, date, default, default_if_none, divisibleby, first, floatformat, get_digit, iriencode, join, last, length, length_is, linebreaks, linebreaksbr, linenumbers, ljust, lower, make_list, phone2numeric, pluralize, random, removetags, rjust, slice, stringformat, striptags, time, title, truncatechars, truncatechars_html, truncatewords, truncatewords_html, upper, urlencode, urlize, urlizetrunc, wordcount, wordwrap, yesno

 

 

10% de réduction sur votre prochaine commande(1)
Inscrivez-vous à notre NEWSLETTER pour recevoir votre code de réduction
(1) Valable uniquement pour toutes nouvelles commandes, hors achat de crédit hosteur et hors renouvellement de prestation. (Commande de produits matériels non inclus)