email - 编辑 Magento 销售电子邮件付款 block

标签 email templates magento

app\locale\en_US\template\email\sales\order_new.html是有问题的文件。

如何在不影响网站其他部分的情况下编辑 {{var payment_html}}?

该部分似乎来自:app\design\frontend\base\default\template\payment\info\default.phtml
我对此是否正确?但是该文件在站点的其他地方使用。这也是正确的吗?

我想创建一个单独的文件,比如 default_email.phtml ,单独设置样式,并让 order_new.phtml 包含新文件。

我假设我需要包括我的 default_email.phtml文件在 layout\***.xml .我会在哪里做这个?

最佳答案

我做的第一件事是搜索 Magento 的源代码。假设 {{var payment_html}}在我搜索的某处处理 payment_html .
有几个结果与搜索匹配;

Mage_Sales_Model_Order
Mage_Sales_Model_Order_Creditmemo
Mage_Sales_Model_Order_Invoice
Mage_Sales_Model_Order_Shipment

因此,该付款块的信息必须在那里。我拿了 Mage_Sales_Model_Order并检查了变量 $paymentBlockHtml .这指向通过支付信息填充支付块的进一步逻辑。它正在创建一个块,看起来这在第一眼中不容易扩展/更改/修改。
是的,我们可以将模板应用于特定的(支付)块类型,因为创建了一个块,但我们无法轻松检查要加载哪个块。此外,模板在 Mage_Payment_Block_Info 的构造中被否决。

让我们用另一种方式检查。

让我们做一些很酷的事情,为什么我们不在电子邮件中添加一个包含正确信息的块,但更重要的是可以切换到正确的大小写。由于模板解析器用于解析变量和布局句柄,我们可以添加以下内容而不是 {{var payment_html}}块并在块本身中检索该信息。
{{block type='core/template' template='email/templatename.phtml'}}

上面的代码将 email/templatename.phtml 解析成电子邮件,这意味着您可以在该模板中做任何事情来显示正确的数据。
在我们可以检索此模板中的付款数据之前,我们必须添加带有订单数据的订单参数。这很简单;
{{block type='core/template' order=$order template='email/templatename.phtml'}}

在模板中我们可以做 $this->getOrder()->getPayment()检索付款信息,或 $this->getOrder->getPayment()->toHtml()或以其他方式处理数据。

奖金;
另一个解决方案是使用布局句柄并在 layout.xml 中设置正确的模板和类型,下面是同一电子邮件中订单项的示例。它的工作方式与块相同,但仅在布局 xml 中进行了一些设置。
{{layout handle="sales_email_order_items" order=$order}}

关于email - 编辑 Magento 销售电子邮件付款 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6875784/

相关文章:

java - 为什么 javamail API 有一个消息发件人数组?

magento - 产品未出现在 Magento2 子类别中

Magento 无法重建缓存

c# - SMTP 服务器需要安全连接或客户端未通过身份验证。如果在 godaddy 上上传

Xcode Server Bot不发送电子邮件报告

php - 是否可以在 php date() 中添加自动换行

templates - 在 grails gsp 模板中,如何使用服务器端注释而不会引发错误站点网格?

Magento - js 变量category_info_tabsJsTabs - 这是什么?

regex - 如何从 .maildir/new/自定义主题中删除邮件?

templates - Kubernetes-helm:为多个应用程序使用一个模板