Aller au contenu principal

Avancé - Répéter un bloc de contenu à l'aide de boucles FOR

Dans cet article, nous allons vous expliquer comment répéter manuellement un bloc de contenu qui se répétera automatiquement et itérera sur tous les éléments d'une seule variable.

Vous pouvez répéter un bloc dans :

  • un email de confirmation de commande pour afficher tous les articles que votre client a achetés,
  • un email de panier abandonné pour afficher tous les articles qui ont été laissés dans le panier de votre client,
  • une campagne RSS pour afficher automatiquement une série d'articles de blog,
  • etc.

Bon à savoir

Qu'est-ce qu'une boucle FOR ?

Pour répéter un bloc, vous avez deux options :

  1. Utiliser la fonction Répéter le bloc, disponible dans les éditeurs Drag & Drop.
  2. (Avancé) Ajouter manuellement des boucles for en utilisant la balise for dans vos templates d'email.

La balise for permet de passer en revue ou itérer chacun des éléments d'une séquence. Il est particulièrement pratique lorsque le nombre d'éléments dans la séquence n'est pas encore connu au moment de la création du template d'email.

Associé à vos paramètres transactionnels, la balise for vous permet d'insérer facilement une liste dynamique d'articles dans vos emails. Ces boucles FOR sont structurées en ajoutant la balise for autour des variables de vos paramètres transactionnels :

{% for VARIABLE in params.PARAMETERNAME %}
{{ VARIABLE.name }} - {{ VARIABLE.price }}
{% endfor %}

Si vous avez connecté votre site Internet à Sendinblue avec un de nos plugins, les noms par défaut de variable et paramètres seront les suivants :

  • variable: item
  • parameter: items

Si vous n'utilisez pas de plugin Sendinblue ou si vous utilisez d'autres paramètres transactionnels, vous pouvez trouver le nom de votre variable et de votre paramètre dans vos logs d'événements. Apprenez comment trouver ces données dans notre article Personnalisez vos emails avec des paramètres transactionnels.

Comment les boucles for sont-elles structurées ?

Une boucle for est créée en utilisant la balise for qui permet de passer en revue ou d'itérer chacun des éléments d'une séquence. Cela est particulièrement utile lorsque le nombre d'éléments de la séquence est inconnu lors de la création d'un template d'email, comme dans une liste dynamique.

Boucle for basique

Voici diverses façons courantes d'utiliser la balise for :

for, in

Affiche une liste

<ul>
   {% for user in params.USERS %}
       <li>{{ user.username }}</li>
   {% endfor %}
</ul>

else

Crée un bloc de remplacement si la séquence est vide

<ul>
   {% for user in params.USERS %}
       <li>{{ user.username }}</li>
   {% else %}
       <li><em>aucun utilisateur trouvé</em></li>
   {% endfor %}
</ul>

Afficherait “aucun utilisateur trouvé”.

reversed

Inverse l'ordre de saisie des éléments d'une séquence

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

Afficherait une liste de pays dans l'ordre inverse de la liste d'origine.

 

Boucle for avancée

💡 Bon à savoir
Les noms des variables des boucles sont sensibles à la casse.

À l'intérieur d'un bloc boucle for, vous pouvez également accéder à ces variables spéciales :

forloop.Counter

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

Ceci peut être facilement utilisé pour numéroter les éléments d'une boucle :

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

produira la liste :

1. Product A
2. Product B
3. Product 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 commençant par 0).

forloop.First

Valeur booléenne définie sur 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, par exemple en ajoutant le filtre "upper" (décrit dans l'article Modifiez le formatage de votre balise avec des filtres) 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 %}

pourrait produire la liste :

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

forloop.Last

Valeur booléenne définie sur 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.

Voici un exemple :

{% for country in countries %}
<table>
{% for city in country.city_list %}
<tr>
<td>Country #{{ forloop.Parentloop.counter }}</td>
<td>City #{{ forloop.Counter }}</td>
<td>{{ city }}</td>
</tr>
{% endfor %}
</table>
{% endfor %}

 

 

Insérer une boucle for dans un e-mail

Dans votre template d'email, entrez votre boucle for autour de vos espaces réservés ({{ item.name }} - {{ item.price }} dans notre exemple ci-dessous).






{% for item in params.items %}
{{ item.name }} - {{ item.price }}
{% endfor %}





mceclip7.png

Voici le résultat possible pour un email, une fois rempli avec les données d'un destinataire ayant acheté 4 articles : 

mceclip6.png

🤔 Vous avez des questions ?

Pour toute question, n’hésitez pas à contacter notre service client en créant un ticket à partir de votre compte. Si vous n’avez pas encore de compte, vous pouvez nous contacter ici.