[Manual] Repetir un bloque de elementos en los emails mediante bucles for

Brevo ofrece dos métodos para repetir un bloque de elementos en tus emails: utilizar un bloque de Dynamic content (Contenido dinámico) en el editor Drag & Drop de email o escribir bucles for manualmente.
Este artículo abarca el método manual. Si prefieres utilizar un bloque de Dynamic content (Contenido dinámico), consulta nuestro artículo dedicado Explicación sobre el bloque de contenido dinámico.

Utiliza un bucle for para mostrar todos los elementos de una matriz de forma dinámica. Esto resulta especialmente útil cuando se desconoce el número de elementos de la matriz, como en el caso de una lista de publicaciones semanales en un blog o un recibo de productos comprados.

Puedes utilizar un bucle for según diferentes criterios:

  • Datos del evento
    Personaliza el contenido en función de las acciones que tus contactos hayan realizado (o no). Por ejemplo, podrías mostrar un bloque promocional solo a los contactos que nunca hayan realizado un pedido.
  • Feeds de datos
    Personaliza el contenido utilizando datos en tiempo real de feeds externos. Por ejemplo, puedes mostrar recomendaciones de productos personalizadas, precios en vivo o información localizada de la tienda basada en datos externos.
  • Feeds de productos
    Personaliza el contenido utilizando la información del producto de tu sitio web de ecommerce. Por ejemplo, puede mostrar tus productos más vendidos o recomendaciones de productos personalizadas.

¿Qué es un bucle for?

Un bucle for es una estructura de programación que se utiliza para repetir un bloque de código para cada elemento de una matriz. En lugar de hacer referencia manualmente a cada índice, el bucle itera a través de la matriz y muestra cada elemento automáticamente. 

En las plantillas de email, los bucles for te permiten mostrar contenido de forma dinámica, como por ejemplo:

  • Un recibo en el que se enumeran todos los artículos que ha comprado un cliente.
  • Un recordatorio por email con los artículos que quedan en el carrito de un cliente.
  • Una campaña RSS que muestra los últimos artículos del blog.
  • Un email personalizado con recomendaciones de productos actualizadas procedentes de un feed de datos externo.

Estructura y sintaxis de un bucle for

La sintaxis de un bucle for puede variar según el tipo de elemento que se repite. En nuestros ejemplos, sustituye placeholder, array y variable con los datos apropiados del elemento que quieres repetir, tal y como se explica en la siguiente tabla:

  Datos del evento Feed de datos Feed de productos
placeholder

Utiliza el nombre exacto de la matriz en tu estructura JSON, pero en su forma singular

Para los feeds de datos, el marcador de posición siempre es item. Para los feed de productos, el marcador de posición siempre es item.
array

Utiliza params.array y sustituye array por el nombre exacto de la matriz en tu estructura JSON.

Utiliza feedname.array y sustituye:

  • feedname por el nombre de tu alias de feed de datos.
  • array por el nombre exacto de la matriz en tu estructura JSON.

Utiliza feed.productfeedname.products y sustituye productfeedname por el nombre de tu feed de productos tal y como se muestra en la página Product feeds (Feeds de productos)

variable

Utiliza la variable de evento correspondiente para mostrar el elemento deseado.

Para obtener más información, consulta nuestra sección dedicada en el artículo [Manual] Personalizar los mensajes con contenido dinámico (lenguaje de plantillas de Brevo)

Utiliza las variables de feed de datos correspondientes tal y como se muestran en tu archivo de fuente de datos externa.

Utiliza las variables de feed de productos correspondientes tal y como se muestran en tu sitio web de ecommerce. 

for, in

Muestra todos los elementos de una matriz como una lista.

Sintaxis
{% for placeholder in array %}
variable
{% endfor %}

Abre la pestaña correspondiente al tipo de datos que quieres mostrar:

Datos del evento Feed de datos Feed de productos
Ejemplo de entrada
{% for item in params.items %}
{{ item.name }} - {{ item.currency }}{{ item.price }}
{% endfor %}
Ejemplo de salida

Zapatos negros: 99 $

Camisa blanca: 20 $

Pantalones rojos: 49 $

else

Muestra un bloque de sustitución si una matriz está vacía.

Sintaxis
{% for placeholder in array %}
variable
{% else %}
Añade aquí tu contenido de sustitución
{% endfor %}

Ejemplo de entrada
{% for user in params.users %}
{{ user.username }}
{% else %}
No se ha encontrado ningún usuario
{% endfor %}
Ejemplo de salida

No se ha encontrado ningún usuario

limit

Limita el bucle al número especificado de iteraciones.

Sintaxis
{% for placeholder in array limit:# %}
variable
{% endfor %}
Ejemplo de entrada
{% for item in params.items limit:2 %}
{{ item.name }}
{% endfor %}
Ejemplo de salida

Producto a

Producto b

reversed

Invierte el orden de impresión de los elementos de tu matriz.

Sintaxis
{% for placeholder in array reversed %}
{% endfor %}
Ejemplo de entrada
{% for country in params.countries reversed %}
{% endfor %}
Ejemplo de salida

Zimbabue

Suecia

México

Alemania

Argentina

Counter

Se establece un número entero que representa el recuento de iteraciones del bucle, comenzando por 1. Esto resulta útil, por ejemplo, para numerar elementos en un bucle.

Sintaxis
{% for placeholder in array %}
{{ forloop.Counter }}. variable
{% endfor %}
Ejemplo de entrada
{% for product in params.products %}
{{ forloop.Counter }}. {{ product.name }}
{% endfor %}
Ejemplo de salida

1. Producto a

2. Producto b

3. Producto c

Counter0

Se establece en un número entero que representa el recuento de iteraciones del bucle, comenzando por 0. 

Sintaxis
{% for placeholder in array %}
{{ forloop.Counter0 }}. variable
{% endfor %}
Ejemplo de entrada
{% for product in params.products %}
{{ forloop.Counter0 }}. {{ product.name }}
{% endfor %}
Ejemplo de salida

0. Producto a

1. Producto b

2. Producto c

Revcounter

Se establece en un número entero que representa la cantidad de elementos que quedan en el bucle. Comienza con el número total de elementos y disminuye hasta 1 en la iteración final.

Sintaxis
{% for placeholder in array %}
{{ forloop.Revcounter }}. variable
{% endfor %}
Ejemplo de entrada
{% for product in params.products %}
{{ forloop.Revcounter }}. {{ product.name }}
{% endfor %}
Ejemplo de salida

5. Producto e

4. Producto d

3. Producto c

2. Producto b

1. Producto a

Revcounter0

Se establece en un número entero que representa la cantidad de elementos que quedan en el bucle. Comienza con el número total de elementos y disminuye a 0 en la iteración final.

Sintaxis
{% for placeholder in array %}
{{ forloop.Revcounter0 }}. variable
{% endfor %}
Ejemplo de entrada
{% for product in params.products %}
{{ forloop.Revcounter0 }}. {{ product.name }}
{% endfor %}
Ejemplo de salida

4. Producto e

3. Producto d

2. Producto c

1. Producto b

0. Producto a

if

Muestra una lista de elementos basada en condiciones específicas.

Sintaxis
{% for placeholder in array %}
{% if condition}
variable
{% endif %}
{% endfor %}
Ejemplo de entrada
{% for product in params.products %}
{% if product.price > 50 %}
{{ product.name }} - ${{ product.price }}
{% endif %}
{% endfor %}
Ejemplo de salida

Producto a: 89 $

Producto c: 105 $

Producto e: 54 $

➡️ Para obtener más información sobre las declaraciones if, consulta nuestro artículo dedicado [Manual] Mostrar u ocultar contenido en tus emails mediante declaraciones if.

forloop.First

Un valor booleano establecido como True en la primera iteración del bucle. Esto resulta útil para gestionar el primer elemento de forma diferente, como aplicar el filtro "superior" solo al primer producto de una lista.

Sintaxis
{% for placeholder in array %}
{{ forloop.Counter }}.
{% if forloop.First %}
variable1
{% else %}
variable2
{% endif %}

{% endfor %}
Ejemplo de entrada
{% for product in params.products %}
{{ forloop.Counter }}.
{% if forloop.First %}
{{ product.name|upper }}
{% else %}
{{ product.name }}
{% endif %}
{% endfor %}
Ejemplo de salida

1. PRIMER PRODUCTO

2. Segundo producto

3. Tercer producto

forloop.Last

Un valor booleano establecido como True en la última iteración del bucle.  Esto resulta útil para gestionar el elemento final de forma diferente, como omitir una coma al final de una lista.

Sintaxis
{% for placeholder in array %}
variable{% if not forloop.Last %},{% endif %}
{% endfor %}
Ejemplo de entrada
{% for product in params.products %}
{{ product.name }}{% if not forloop.Last %},{% endif %}
{% endfor %}
Ejemplo de salida

Producto a, Producto b, Producto c

forloop.Parentloop

Se refiere al objeto forloop del bucle principal en bucles anidados.

Sintaxis
{% for placeholder in array %}
Country #{{ forloop.Counter }}: variable
{% for placeholder in array %}
City #{{ forloop.Counter }}: variable
{% endfor %}
{% endfor %}
Ejemplo de entrada
{% for country in countries %}
Country #{{ forloop.Counter }}: {{ country.name }}
{% for city in country.city_list %}
City #{{ forloop.Counter }}: {{ city }}
{% endfor %}
{% endfor %}
Ejemplo de salida

País #1: EE. UU.

Ciudad #1: Nueva York

Ciudad #2: Los Ángeles

Ciudad #3: Chicago

País #2: Alemania

Ciudad #1: Berlín

Ciudad #2: Múnich

Ciudad #3: Hamburgo

⏭️ ¿Qué es lo siguiente?

🤔 ¿Tiene alguna duda?

Si tiene alguna pregunta, no dude en ponerse en contacto con nuestro equipo de asistencia mediante la creación de un ticket desde su cuenta. Si todavía no tiene una cuenta, puede ponerse en contacto con nosotros aquí.

Si necesitas ayuda con un proyecto usando Brevo, podemos ponerte en contacto con la agencia partner de Brevo adecuada.

💬 ¿Fue útil este artículo?

Usuarios a los que les pareció útil: 5 de 17