我被困在我的自定义代码中。
我想将自定义变量从电子邮件模板传递到 pthml 文件。
编辑文件
应用程序/代码/本地/法师/销售/模型/Order.php
在这个函数中:
public function sendNewOrderEmail()
{
--- default code start ----
$mailer->setTemplateParams(array(
'order' => $this,
'test' => 'XXXXX',
'billing' => $this->getBillingAddress(),
'payment_html' => $paymentBlockHtml
)
);
--- default code end ----
}
然后我将此代码放入新订单电子邮件模板中:
{{layout handle="sales_email_order_items" order=$order test=$test}}
模板文件位于此处:
应用程序/locale/en_US/template/email/sales/order_new.html
我正在尝试在这里获取测试变量:
应用程序/设计/前端/默认/默认/模板/电子邮件/订单/项目/订单/default.phtml
像这样:$test = $this->getItem()->getTest()
但没有获得成功。请告诉我我错在哪里?或者需要做什么来访问 phtml 文件中的这个变量?
这里的问题是“测试”值转到使用“email/order/items.phtml”模板的主块 Mage_Sales_Block_Order_Email_Items。
在那里您可以使用以下方式找到数据:
<?php $test = $this->getTest(); // or $this->getData('test') ?>
然后您可以将此数据添加到注册表中。
但更好的方法是在电子邮件之前将此信息发送到订单商品上。
因此,在电子邮件函数中 $mailer->setTemplateParams(); 之前添加如下代码:
//$this = current order if you are in Mage_Sales_Model_Order
foreach ($this->getAllVisibleItems() as $item) {
$item->setData('test', 'test_value_10');
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)