我试图在客户下订单后向客户发送邮件。该电子邮件将包含所订购产品的所有交叉销售产品。
我使用以下链接作为参考:
一切都很好。
但是现在我的疑问是,我能否在locale目录中放置的html文件中使用foreach循环?
这样我就可以迭代并在邮件模板中打印所有产品信息。有人可以帮忙吗?
我试图在客户下订单后向客户发送邮件。该电子邮件将包含所订购产品的所有交叉销售产品。
我使用以下链接作为参考:
一切都很好。
但是现在我的疑问是,我能否在locale目录中放置的html文件中使用foreach循环?
这样我就可以迭代并在邮件模板中打印所有产品信息。有人可以帮忙吗?
Answers:
我认为不可能直接在电子邮件中执行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; ?>
有关更多信息,我关注了此博客
items=$items
吗?由于$items
是php变量。
实际上,您可以在电子邮件中使用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()
函数可能无法正常工作。