我被我的自定义代码卡住了。
我想将自定义变量从电子邮件模板传递到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}}
模板文件位于此处:
应用程序/区域/ EN_US /模板/电子邮件/销售/ order_new.html
我想在这里获得测试变量:
应用程序/设计/前端/默认/默认/模板/电子邮件/顺序/物品/订单/ default.phtml
像这样:$test = $this->getItem()->getTest()
但没有成功。请让我知道我哪里错了?或者做什么需要在phtml文件中访问这个变量?
答案 0 :(得分:2)
答案 1 :(得分:2)
这里的问题是'测试'值转到主块Mage_Sales_Block_Order_Email_Items,它使用" email / order / items.phtml" tempalte。
在那里你可以使用:
找到数据<?php $test = $this->getTest(); // or $this->getData('test') ?>
然后,您可以将此数据添加到注册表中。
但更好的方法是在电子邮件之前将此信息发送到订单商品。 所以,在$ mailer-&gt; setTemplateParams()之前的电子邮件功能中;添加如下代码:
//$this = current order if you are in Mage_Sales_Model_Order
foreach ($this->getAllVisibleItems() as $item) {
$item->setData('test', 'test_value_10');
}