Avanzado - Repetir un bloque de elementos con bucles for

En este artículo le explicaremos como repetir de forma manual un bloque de elementos que se reproducirá automáticamente e iterará en todos los elementos dentro de una sola variable.

Puede repetir un bloque en:

  • un e-mail de confirmación para mostrar todos los artículos que ha comprado su cliente,
  • un e-mail de carrito abandonado para mostrar todos los artículos que se quedaron en el carrito de su cliente,
  • una campaña RSS para mostrar de forma automática una serie de artículos de blog,
  • etc.

Información relevante

¿Qué es una herramienta de «bucles for»?

Para repetir un bloque, tiene dos opciones:

  1. Utilizar la funcionalidad disponible en ambos editores Drag & Drop.
  2. (Avanzado) Añadir bucles for de forma manual con la etiqueta for en sus plantillas de e-mail.

La etiqueta for permite realizar un bucle o iterar cada elemento de una lista. Esto es especialmente útil cuando se desconoce el número de elementos de una lista al crear una plantilla de e-mail. 

Combinada con su etiqueta de parámetros transaccionales, la etiqueta for permite insertar fácilmente una lista dinámica de elementos en sus e-mails. Estos «bucles for» se estructuran añadiendo la etiqueta for alrededor de los marcadores de posición de parámetros transaccionales:

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

Si ha conectado su sitio web a Sendinblue usando uno de nuestros plugins, de forma predeterminada, sus nombres de variables y parámetros serán:

  • variable: item
  • parámetro: items

Si no está utilizando un plugin de Sendinblue o si está utilizando otros parámetros transaccionales, podrá encontrar su variable y nombre de parámetro en sus logs de eventos. Vea cómo puede encontrar estos datos en nuestro artículo Personalice sus e-mails utilizando parámetros transaccionales.

¿Cómo se estructuran los bucles for?

Un bucle for se crea utilizando la etiqueta for, que le permite repetir o iterar cada elemento en una secuencia. Esto es particularmente útil si se desconoce el número de elementos en una secuencia en el momento de crear una plantilla de e-mail, como en una lista dinámica.

Bucle for básico

Hay varias maneras habituales de utilizar la etiqueta for:

for, in

mostrar una lista

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

else

mostrar un bloque de sustitución si su secuencia está vacía

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

Mostrará "no se encontró ningún usuario”.

reversed

invierte el orden de impresión de los elementos de su secuencia

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

Mostrará una lista de países, pero en el orden invertido comparado con la lista original.

 

Bucle for avanzado

💡 Información relevante
Los nombres de variable de bucles reconocen mayúsculas y minúsculas.

Dentro de un bloque de bucle for también puede acceder a estas variables especiales:

forloop.Counter

Ajustado siempre a un número entero que representa el número de veces que se ha entrado en el bucle. Está indexado en uno, de modo que la primera vez que pase por el bucle, forloop.Counter será 1.

Esto puede ser útil para enumerar fácilmente los elementos de un bucle:

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

mostrará la lista así:

1. Producto a
2. Producto b
3. Producto c, etc.

forloop.Counter0

La iteración actual del bucle. (0 indexado)

forloop.Revcounter

Ajustado siempre en un entero que representa el número de elementos restantes en el bucle. La primera vez que pase por el bloque, forloop.Revcounter mostrará el número total de elementos en la secuencia que está atravesando. La última vez que pase por el bucle, forloop.revcounter será 1.

forloop.Revcounter0

El número de iteración del final del bucle (0 indexado)

forloop.First

Valor boleano ajustado en True si es la primera vez que se pasa por el bucle.

Es útil para poner en mayúsculas el primer elemento de una lista, añadiendo el filtro “mayúscula” (que se describe en Modifique el formato de su marcador de posición con filtros) solo al primer elemento de esta lista de ejemplo de productos.

{% for product in params.products %}
{{ forloop.Counter }}. {% if forloop.First %} {{ product.name|upper }} {% else %} {{ product.name }} {% endif %} - {{ product.price }}
{% endfor %}

Mostrará la lista de productos así:

1. PRIMER PRODUCTO - $5.00
2. Segundo producto - $2.00
3. Tercer producto - $4.00

forloop.Last

Valor boleano en True si es la última vez que se pasa por el bucle. Se suele utilizar, entre otras cosas, para poner caracteres de separación  (como , o |) en una lista de elementos.

forloop.Parentloop

Referencia el objeto del bucle for object para el bucle principal, en el caso de bucles anidados.

Aquí tiene un ejemplo:

{% 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 %}

 

 

Insertar un bucle for en un e-mail

En su plantilla de e-mail, escriba su bucle for alrededor de los marcadores de posición  ({{ item.name }} - {{ item.price }} en nuestro ejemplo).







{% for item in params.items %}

{{ item.name }} - {{ item.price }}
{% endfor %}




mceclip5.png

Este es el aspecto que puede tener su e-mail una vez completado con los datos de un destinatario que haya comprado cuatro artículos: 

mceclip4.png