【问题标题】:Using customer first name in order confirmation email在订单确认电子邮件中使用客户名字
【发布时间】:2013-05-16 09:32:44
【问题描述】:

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

例如:

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

在电子邮件中呈现如下:

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

有人能指出我正确的方向吗?这是在社区版 1.7 上。

谢谢

【问题讨论】:

    标签: magento magento-1.7


    【解决方案1】:

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

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

    {{var model.method()}}
    

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

    {{var order.getCustomerFirstname()}}
    

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

    【讨论】:

    • 虽然您的回答合适,但“您不能在电子邮件模板中使用 PHP 代码”应该是合格的。消息正文的内容不被解析为 PHP,但通过 {{block}} 参数查看包含 PHP 解析的内容(模板)的订单模板。
    • 不幸的是,以下内容根本没有输出任何内容:{{var customer.getFirstName()}}
    • @petergunn 感谢您的更新。现在这很有意义,因为 Order 模型只有一个 getCustomerName() 方法,而不是一个 getCustomerFirstName() 方法。既然如此,看起来选项 b 是我必须走的路
    • @RussBack 不完全是,订单模型有getCustomerFirstname() 方法(不是getCustomerFirstName()),它在getCustomerName() 方法中使用。试试吧,它对我有用。
    • order.getCustomerFirstname() 不适用于客人结帐,order.getBillingAddress().getFirstname() 两者都适用
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-21
    • 1970-01-01
    相关资源
    最近更新 更多