Есть ли способ добавить цикл foreach в шаблон электронной почты?

10

Я пытаюсь вызвать почту для клиента после того, как он разместит заказ. Это электронное письмо будет содержать информацию обо всех товарах, которые были заказаны.

Я использовал следующие ссылки в качестве ссылки:

отправить письмо с помощью наблюдателя событий

Расширенные шаблоны транзакционной электронной почты

Все работает хорошо.

Но теперь я сомневаюсь, смогу ли я использовать цикл foreach внутри файла html, помещенного в каталог локали ?

Чтобы я мог повторить и распечатать всю информацию о продукте в почтовом шаблоне. Кто-нибудь может помочь?

Shathish
источник

Ответы:

21

Я думаю, что невозможно напрямую выполнить цикл foreach в электронных письмах, но вы можете включить блок, который будет выполнять цикл в обычном шаблоне.

В свой адрес электронной почты добавить что-то вроде следующего.

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

Затем в вашем шаблоне добавьте следующее.

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

Для получения дополнительной информации я следил за этим блогом

Дэвид Мэннерс
источник
Я на самом деле пытался это. примет это через 2 минуты
Shathish
Нужно ли добавлять этот блок в шаблон электронной почты? И поймет items=$itemsли это ? Как $itemsпеременная php.
Акшай Тару
Привет, я пытался выше не работает для меня. Любые предложения
Акшай Тару
0

На самом деле вы можете использовать цикл for в электронных письмах. Я проверил это на версии 2.3.3. Это код местоположения для проверки. Вот как это выглядит в шаблоне:

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

Транспортная информация:

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

В стороне. В 2.3.4 код был переработан , но я считаю, что он все еще должен работать, поскольку он не был удален. Помните, что в этой версии Magento убрана возможность вызова функций для объектов, поэтому ваша order->getItems()функция может не работать.

augsteyer
источник