我想在联系表格发送的联系电子邮件中包含访问者最近浏览过的产品列表。我知道如何如下修改电子邮件模板:
<tr>
<td><b>{{trans "Product URLs"}}</b></td>
<td>{{var data.product_urls}}</td>
</tr>
通过将此代码添加到主题contact_index_index.xml中,我可以在联系表单上显示“最近查看的产品”小部件
<referenceContainer name="form.additional.info">
<block class="Magento\Catalog\Block\Widget\RecentlyViewed" name="recently_viewed_products" template="Magento_Catalog::product/widget/viewed/grid.phtml" after="-">
<arguments>
<argument name="uiComponent" xsi:type="string">widget_recently_viewed</argument>
<argument name="page_size" xsi:type="number">12</argument>
<argument name="show_attributes" xsi:type="string">name,image,price,learn_more</argument>
<argument name="show_buttons" xsi:type="string">add_to_cart</argument>
</arguments>
</block>
</referenceContainer>
我认为这是使用旧小部件的一种替代选择:
<referenceContainer name="form.additional.info">
<block class="Magento\Reports\Block\Product\Widget\Viewed" after="-" name="recently_viewed" cacheable="false" template="Magento_Reports::widget/viewed/content/viewed_grid.phtml">
<action method="setPageSize">
<argument name="page_size" xsi:type="number">12</argument>
</action>
</block>
</referenceContainer>
但是,当我们发布联系表时如何提交产品列表?
我只需要包含产品ID,SKU,名称或URL的列表。
更新: 我正在进步。 在我的主题中,我重写了Magento_Reports / templates / widget / viewed / content / viewed_grid.phtml 现在,我可以像这样提取所需的数据:
$product_urls = '';
$product_ids = '';
$product_skus = '';
然后在“ foreach”语句之后:
<?php
if ($iterator > 1) {
$product_urls .= ',';
$product_ids .= ',';
$product_skus .= ',';
}
$product_urls .= $block->getProductUrl($_item);
$product_ids .= $_item->getId();
$product_skus .= $_item->getSku();
?>
这给了我逗号分隔的列表。现在,我将添加隐藏的控件以使用以下格式提交数据:
答案 0 :(得分:0)
Do!我发现使用Magento Admin通过单行代码即可解决整个问题的简单方法:
1)转到Magento管理员,市场营销,电子邮件模板
2)添加新模板
3)加载联系人表格模板
4)模板名称=“我的联系表”
5)将以下代码添加到模板内容:
{{block class="Magento\\Reports\\Block\\Product\\Widget\\Viewed" template="Magento_Reports::widget/viewed/content/viewed_grid.phtml"}}
6)保存模板
7)转到Magento管理员,商店,配置,常规,联系人,电子邮件选项
8)电子邮件模板=“我的联系表”
粗暴但有效!