C'è un modo per aggiungere un ciclo foreach nel modello e-mail?


10

Sto cercando di attivare una mail al cliente dopo aver effettuato un ordine. Questa e-mail trasporterà tutti i prodotti di vendita incrociata dei prodotti ordinati.

Ho usato i seguenti link come riferimento:

inviare e-mail utilizzando l'osservatore di eventi

Modelli email transazionali avanzati

Tutto funziona bene.

Ma ora il mio dubbio è, sarò in grado di utilizzare foreach loop all'interno del file html inserito nella directory locale ?

In modo da poter iterare e stampare tutte le informazioni sul prodotto nel modello di posta. Qualcuno può aiutare?

Risposte:


21

Penso che non sia possibile eseguire direttamente un ciclo foreach nelle e-mail, ma ciò che potresti fare è includere un blocco che eseguirà il ciclo in un modello normale.

Nella tua e-mail aggiungi qualcosa di simile al seguente.

{{block type='core/template' area='frontend' template='email/template.phtml' items=$items}}

Quindi nel modello aggiungi quanto segue.

<?php foreach ($this->getItems() as $_item): ?>
    <p><?php echo $_item['name'] ?></p>
<?php endforeach; ?>

Per ulteriori informazioni ho seguito questo blog


Ya, in realtà stavo provando questo. lo accetterò in 2 minuti
Shathish,

Dobbiamo aggiungere questo blocco all'interno del modello e-mail? E capirà items=$items? Come $itemsè variabile php.
Akshay Taru,

Ciao, ho provato sopra a non funzionare per me. Eventuali suggerimenti
Akshay Taru,

0

In realtà è possibile utilizzare un ciclo for nelle e-mail. L'ho provato sulla versione 2.3.3. Questa è la posizione del codice da ispezionare. Ecco come appare nel modello:

<ul>
  {{for item in data.items}}
     <li>Name: {{var item.name}}</li>
  {{/for}}
</ul>

Le informazioni di trasporto:

$this->transportBuilder->setTemplateVars(
[
 'items' => [
              ['name' => 'Product1'],
              ['name' => 'Product2']
            ]
...

A parte. In 2.3.4 il codice è stato refactored , ma credo che dovrebbe funzionare anche perché non è stato rimosso. Ricorda che Magento ha rimosso la possibilità di chiamare funzioni sugli oggetti a partire da questa versione, quindi la tua order->getItems()funzione potrebbe non funzionare.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.