在订单确认电子邮件中使用客户名

Rus*_*ack 2 magento magento-1.7

我看过很多文章(大多是3-5岁),详细介绍了将客户的名字输入订单确认电子邮件的各种方法,但我得到的是空白或未解析的PHP.

例如:

<?php echo $this->__('Hello, %s', Mage::getSingleton('customer/session')->getCustomer()->getFirstname()); ?>
Run Code Online (Sandbox Code Playgroud)

像这样在电子邮件中呈现:

__('Hello,%s',Mage :: getSingleton('customer/session') - > getCustomer() - > getFirstname()); ?>

有人能指出我正确的方向吗?这是在Community Edition 1.7上.

谢谢

pet*_*unn 6

[已编辑]您无法直接在电子邮件模板中使用PHP代码.如果要将动态数据插入电子邮件模板,您有两种可能:

a)在每个交易电子邮件中,您可以访问模型的方法,该方法负责交易电子邮件,它是:对于处理订单的邮件,这是订单 - 模型,对于处理新闻通讯的邮件,这是新闻通讯-model等.您可以使用以下语法访问方法:

{{var model.method()}}
Run Code Online (Sandbox Code Playgroud)

因此,在您的情况下,要在订单确认电子邮件中访问客户的名字,您需要在订单模型中查找适合的方法,即getCustomerFirstname().然后你可以按照给定的语法调用它:

{{var order.getCustomerFirstname()}}
Run Code Online (Sandbox Code Playgroud)

b)您可以通过创建自定义的phtml模板将动态数据包含到您的电子邮件模板中,并通过{{block}}指令将其包含在您的电子邮件模板中(如下面评论中的benmarks所指出)

  • order.getCustomerFirstname()不适用于guest checkout,order.getBillingAddress().getFirstname()确实可以同时使用 (3认同)