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 |
Utiliza
|
Utiliza |
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 %}
|
Abre la pestaña correspondiente al tipo de datos que quieres mostrar:
| Ejemplo de entrada | |
|---|---|
{% for item in params.items %}
|
|
| Ejemplo de salida | |
|
Zapatos negros: 99 $ Camisa blanca: 20 $ Pantalones rojos: 49 $ |
| Ejemplo de entrada | |
|---|---|
{% for item in feed.yogaclasses.following_classes %}
|
|
| Ejemplo de salida | |
|
Power Flow Yoga - 2025-03-07 a las 09:00 AM Evening Restorative - 2025-03-07 a las 07:00 PM Fundamentos del Hatha Yoga - 2025-03-08 a las 10:30 AM |
| Ejemplo de entrada | |
|---|---|
{% for item in feed.mats_bestseller.products %}
|
|
| 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 %} |
| Ejemplo de entrada |
{% for user in params.users %} |
| 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:# %}
|
| Ejemplo de entrada |
{% for item in params.items limit:2 %}
|
| 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 %}
|
| Ejemplo de entrada |
{% for country in params.countries reversed %}
|
| 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 %}
|
| Ejemplo de entrada |
{% for product in params.products %}
|
| 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 %}
|
| Ejemplo de entrada |
{% for product in params.products %}
|
| 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 %}
|
| Ejemplo de entrada |
{% for product in params.products %}
|
| 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 %}
|
| Ejemplo de entrada |
{% for product in params.products %}
|
| 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 %}
|
| Ejemplo de entrada |
{% for product in params.products %}
|
| 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 %}
|
| Ejemplo de entrada |
{% for product in params.products %}
|
| 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 %}
|
| Ejemplo de entrada |
{% for product in params.products %}
|
| 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 %}
|
| Ejemplo de entrada |
{% for country in countries %}
|
| 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?
- [Manual] Personalizar los mensajes con contenido dinámico (lenguaje de plantillas de Brevo)
- [Manual] Mostrar u ocultar contenido en tus emails mediante declaraciones if
- Modificar la salida de una variable mediante filtros
🤔 ¿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.