Avançado - Como repetir um bloco de itens usando for-loops

Neste artigo, vamos explicar como repetir manualmente um bloco de itens que se repetirá e fará uma iteração sobre todos os itens automaticamente dentro de uma única variável.

Você pode repetir um bloco em:

  • um e-mail de recibo para exibir todos os itens comprados pelo seu cliente,
  • um e-mail de carrinho abandonado para exibir todos os itens deixados no carrinho de seus clientes,
  • uma campanha RSS para exibir automaticamente uma série de artigos do blog,
  • etc.

Dica

O que é um for-loop?

Para repetir um bloco, você tem duas opções:

  1. Usar o recurso Repetir bloco disponível dentro de ambos os Editores arraste e solte.
  2. (Avançado) Adicionar manualmente for-loops usando a tag for em seus modelos de e-mail.

A tag for permite que você faça loop, ou repita cada item em uma lista. Isso é particularmente útil quando o número de itens em uma lista é desconhecida ao criar um modelo de e-mail.

Combinado com seus parâmetros transacionais, a tag for permite que você insira facilmente uma lista dinâmica de itens em seus e-mails. Estes for-loops são estruturados adicionando a tag for ao redor de suas placeholders de parâmetros transacionais:

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

Se tiver conectado seu site à Sendinblue usando um de nossos plug-ins, por padrão os nomes da variável e do parâmetro serão:

  • variável: item
  • parâmetro: itens

Se não estiver usando um plug-in Sendinblue ou se estiver usando outros parâmetros transacionais, você pode encontrar o nome de sua variável e parâmetro nos seus logs do evento. Saiba como encontrar estes dados em nosso artigo Como personalizar seu e-mail usando parâmetros transacionais.

Como os for-loops são estruturados?

Um for-loop é criado usando a tag for que permite que você realize loops ou iterações sobre cada item em uma sequência. Isso é particularmente útil quando o número de itens na sequência é desconhecido ao criar um modelo de e-mail, como em uma lista dinâmica.

For-loop básico

Aqui estão algumas maneiras comuns de usar a tag for:

for, in

exibe uma lista

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

else

renderiza um bloco de substituição se a sua sequência estiver vazia

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

Exibiria “nenhum usuário encontrado”.

reversed

inverte a ordem de impressão dos itens em sua sequência

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

Exibiria uma lista de países, mas em ordem inversa em comparação com a lista original.

 

For-loop avançado

💡 Dica
Nomes de variáveis de loop são sensíveis a maiúsculas e minúsculas.

Dentro de um bloco for-loop, você também pode acessar estas variáveis especiais:

forloop.Counter

Ajusta sempre para um número inteiro que representa o número de vezes que o loop foi introduzido. Ele é indexado a um, ou seja, na primeira vez pelo loop, forloop.Counter será ajustado para 1.

Isso pode ser facilmente usado para numerar itens em um loop:

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

resultará em uma lista como esta:

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

forloop.Counter0

A iteração atual do loop. (indexado a 0)

forloop.Revcounter

Ajusta sempre para um número inteiro que representa o número de itens restantes no loop. A primeira vez no loop, forloop.Revcounter será ajustado para o número total de itens na sequência atravessada. A última vez no loop, forloop.revcounter será ajustado para 1.

forloop.Revcounter0

O número de iterações a partir do fim do loop (indexado a 0)

forloop.First

Valor booleano ajustado para Verdadeiro se por a primeira vez no loop.

Isso é conveniente para o destaque especial do primeiro item em uma lista, como a adição do filtro "Maiúsculas" (descrito na Como modificar a formatação de seu placeholder usando filtros) para apenas o primeiro item nesta lista de produtos.

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

Resultaria em uma lista de produtos como esta:

1. PRIMEIRO PRODUTO - $5.00
2. Segundo produto - $2.00
3. Terceiro produto - $4.00

forloop.Last

Valor booleano ajustado para Verdadeiro se for a última vez no loop. Um uso comum para isso é para a colocação de caracteres de separação (como , ou |) em uma lista de itens.

forloop.Parentloop

Referencia o objeto forloop para o loop principal, no caso de loops agrupados.

Aqui está um exemplo:

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

 

 

Como inserir um for-loop em um e-mail

Em seu modelo de e-mail, digite seu for-loop em volta dos placeholders ({{ item.name }} - {{ item.price }} em nossos exemplo abaixo).







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




mceclip5.png

Aqui está como seu e-mail vai parecer quando preenchido com os dados de um destinatário que comprou 4 itens:

mceclip4.png