¿Hay alguna manera de agregar foreach loop en la plantilla de correo electrónico?


10

Estoy tratando de enviar un correo al cliente después de realizar un pedido. Este correo electrónico incluirá todos los productos de venta cruzada de los productos pedidos.

Usé los siguientes enlaces como referencia:

enviar correo electrónico utilizando observador de eventos

Plantillas de correo electrónico transaccionales avanzadas

Todo esta funcionando bien.

Pero ahora mi duda es, ¿podré usar el bucle foreach dentro del archivo html que se encuentra dentro del directorio de configuración regional ?

Para poder iterar e imprimir toda la información del producto en la plantilla de correo. ¿Alguien puede ayudar?

Respuestas:


21

Creo que no es posible realizar directamente un bucle foreach en los correos electrónicos, pero lo que podría hacer es incluir un bloque que haga el bucle en una plantilla regular.

En su correo electrónico agregue algo como lo siguiente.

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

Luego, en su plantilla, agregue lo siguiente.

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

Para más información seguí este blog


Sí, en realidad estaba intentando esto. aceptará esto en 2 minutos
Shathish

¿Tenemos que agregar este bloque dentro de la plantilla de correo electrónico? ¿Y lo entenderá items=$items? Como $itemses la variable php.
Akshay Taru

Hola, intenté arriba no funciona para mí. Cualquier sugerencia
Akshay Taru

0

En realidad, puede usar un bucle for en los correos electrónicos. Lo he probado en la versión 2.3.3. Esta es la ubicación del código para inspeccionar. Así es como se ve en la plantilla:

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

La información de transporte:

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

Aparte. En 2.3.4 el código fue refactorizado , pero creo que aún debería funcionar ya que no fue eliminado. Recuerde que Magento eliminó la capacidad de invocar funciones en objetos a partir de esta versión, por lo que es posible que su order->getItems()función no funcione.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.