4

我正在尝试在 Magento 中的新订单电子邮件的电子邮件主题中显示付款方式。原因是我们的客户可以很容易地从 Magento 发送的电子邮件主题中确定订单是通过支付网关还是通过 Paypal Express 来的。

我不完全确定实现这一目标的最佳方法,我想认为已经有一些可用的东西可以用于此目的。

{{var payment_html}}

返回电子邮件模板的付款方式块...

{{var paymentMethod}}

电子邮件主题中绝对没有返回任何内容,因此现在不确定这是否是折旧变量。

我想还有创建自定义属性的选项,在静态块中调用它,然后在电子邮件模板中将其显示为自定义变量,但这似乎是一种相当冗长的方法,只是纯粹通过 SagePay 获取文本字符串”或“通过 Paypal Express”。

任何帮助将不胜感激。

提前致谢。

4

2 回答 2

20

您实际上不需要执行任何自定义,此变量已经通过对象链在模板中可用。Magento 模板支持此链,并允许使用对象的 getter。

在这种情况下,您需要检索订单的支付对象,然后检索其方法实例并从方法实例中检索方法标题。这是非常简单的构造:

{{var order.getPayment().getMethodInstance().getTitle()}}

这应该可以帮助你!

于 2012-12-19T14:31:53.267 回答
2

方法 Mage_Sales_Model_Order::sendNewOrderEmail() 负责发送新的订单电子邮件。

$paymentBlock = Mage::helper('payment')->getInfoBlock($this->getPayment())
    ->setIsSecureMode(true);
$paymentBlock->getMethod()->setStore($storeId);
$paymentBlockHtml = $paymentBlock->toHtml();

...

$mailer->setTemplateParams(array(
    'order'        => $this,
    'billing'      => $this->getBillingAddress(),
    'payment_html' => $paymentBlockHtml
)

payment_html 是渲染块的 html 输出,所以你不能使用它。

您可以使用付款方式再添加一个关联密钥(使用重写或本地/法师技巧),并使用交易电子邮件将此参数添加到主题。

于 2012-12-19T14:27:43.700 回答