4

我被困在我的自定义代码中。

我想将自定义变量从电子邮件模板传递到 pthml 文件。

编辑文件

app/code/local/Mage/Sales/Model/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}}

模板文件位于此处:

app/locale/en_US/template/email/sales/order_new.html

我正在尝试在这里获取测试变量:

app/design/frontend/default/default/template/email/order/items/order/default.phtml

像这样:$test = $this->getItem()->getTest()

但没有获得成功。请让我知道我错在哪里?或者需要做什么才能访问 phtml 文件中的这个变量?

4

2 回答 2

2

在您的电子邮件模板中获取变量

{{var 测试}}

看看@Defining Transactional Variables

于 2013-12-26T14:47:08.037 回答
2

您的问题是“测试”值转到使用“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');
}
于 2015-02-03T12:58:30.910 回答