Vai al contenuto principale

Avanzato - Ripetizione di un blocco di elementi usando i cicli for

In questo articolo, vedremo come ripetere manualmente un blocco di elementi che si ripeterà automaticamente e più volte su tutti gli elementi all'interno di una singola variabile.

È possibile ripetere un blocco in:

  • un'email di ricezione di un'email per visualizzare tutti gli articoli acquistati dal tuo cliente,
  • un'email per carrello abbandonato per visualizzare tutti gli articoli che sono stati lasciati nel carrello dal tuo cliente,
  • una campagna RSS per visualizzare automaticamente una serie di articoli di un blog,
  • ecc.

Buono a sapersi

Che cos'è un ciclo for?

Per ripetere un blocco, hai due alternative:

  1. Usare la funzione Ripeti blocco disponibile in entrambi gli editor drag & drop
  2. (Avanzato) Aggiungere manualmente dei cicli "for" utilizzando il tag for nei modelli di email

Il tag for consente di elaborare a ciclo continuo, o di ripetere il passaggio su, ciascun elemento di una lista. Questo è particolarmente utile quando il numero di elementi di un elenco è ancora sconosciuto quando si crea un modello di email.

In abbinamento ai parametri transazionali, il tag for  ti consente di inserire facilmente una lista dinamica di elementi nelle tue email. Questi cicli for sono strutturati aggiungendo il tag for attorno ai segnaposto dei parametri transazionali:

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

Se hai collegato il tuo sito web a Sendinblue utilizzando uno dei nostri plugin,  per impostazione predefinita il nome della variabile e del parametro saranno:

  • variabile: item
  • parametro: items

Se non stai usando un plugin Sendinblue o se stai usando altri parametri transazionali, puoi trovare il nome della variabile e del parametro nei log degli eventi. Scopri come trovare questi dati nel nostro articolo Personalizzazione delle email con i parametri transazionali.

Come sono strutturati i cicli for?

Un ciclo for viene creato utilizzando il tag for che ti consente di elaborare a ciclo continuo, o di ripetere il passaggio su, ciascun elemento di una sequenza. Questo è particolarmente utile quando il numero di elementi della sequenza è ancora sconosciuto quando si crea un modello di email, come nel caso di una lista dinamica.

Ciclo for di base

Ci sono molti modi per usare il tag for:

for, in

Visualizza una lista

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

else

Crea un blocco sostitutivo se la sequenza è vuota

<ul>
   {% for user in params.USERS %}
       <li>{{ user.username }}</li>
   {% else %}
       <li><em>non sono stati trovati utenti</em></li>
   {% endfor %}
</ul>

Verrebbe visualizzato “non sono stati trovati utenti”.

reversed

Inverte l'ordine di stampa degli elementi nella sequenza

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

Visualizzerebbe un elenco di paesi, ma in ordine inverso rispetto all'elenco originale.

 

Ciclo for avanzato

💡 Buono a sapersi
Nei nomi delle variabili dei cicli viene fatta distinzione fra maiuscole e minuscole.

All'interno di un blocco for puoi anche accedere a queste variabili speciali:

forloop.Counter

Impostato sempre su un numero intero che rappresenta il numero di volte per cui viene ripetuto il ciclo. Poiché inizia da 1, la prima volta che viene eseguito il ciclo, forloop. Counter sarà impostato su 1.

Questo può essere facilmente utilizzato per numerare gli elementi di un ciclo:

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

genererà una lista simile alla seguente:

1. Prodotto a
2. Prodotto b
3. Prodotto c, ecc.

forloop.Counter0

Iterazione corrente del ciclo (cominciando da 0)

forloop.Revcounter

Impostato sempre su un numero intero che rappresenta il numero di elementi restanti del ciclo. Dopo la prima iterazione del ciclo, forloop.Revcounter sarà impostato sul numero totale di elementi della sequenza che stai attraversando. All'ultima iterazione del ciclo, forloop.revcounter sarà impostato su 1.

forloop.Revcounter0

Il numero di iterazioni dalla fine del ciclo (cominciando da 0)

forloop.First

Valore booleano impostato su True se è la prima iterazione del ciclo.

Utile per applicare un determinato formato al primo elemento di una lista, ad esempio aggiungendo il filtro "upper" (descritto nella sezione "Filtri" di seguito) solo al primo elemento di questa lista di prodotti di esempio.

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

potrebbe generare una lista di prodotti simile alla seguente:

1. PRIMO PRODOTTO - € 5,00
2. Secondo prodotto - € 2,00
3. Terzo prodotto - € 4,00

forloop.Last

Valore booleano impostato su True se questa è l'ultima iterazione del ciclo. Viene spesso utilizzato per inserire dei caratteri separatori (come , o |) in un elenco di elementi.

forloop.Parentloop

Fa riferimento all'oggetto forloop per il ciclo genitore, in caso di cicli nidificati.

Ad esempio:

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

 

 

Inserimento di un ciclo for in un'email

Nel modello di email digita il ciclo for intorno ai segnaposto ({{ item.name }} - {{ item.price }} nell'esempio sottostante).






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






mceclip5.png

Ecco come può apparire la tua email una volta compilata con i dati di un destinatario che ha acquistato 4 articoli:

mceclip4.png

🤔 Domande?

In caso di domande, non esitare a contattare il team dell’assistenza creando un ticket dal tuo account. Se ancora non hai un account, puoi contattarcihere.