【问题标题】:Magento View 'Company Name' Instead Of First/Last NameMagento 查看“公司名称”而不是名字/姓氏
【发布时间】:2010-09-09 03:20:47
【问题描述】:

Magento 除了联系人姓名之外,还可以通过他们的公司名称查看/管理我们的客户以便轻松找到他们吗?它被用于 B2B,因此当电子邮件发出时,他们会提取客户的姓名,而不是更合适的公司名称。

这是全局设置吗?

提前致谢。

【问题讨论】:

    标签: magento customization


    【解决方案1】:

    Magento 默认将公司名称存储在客户的地址上,因此访问起来有点困难。

    您没有理由不能添加另一个客户字段来将公司名称放在客户记录上。这样您就可以毫无问题地访问它,并且可以更改系统中的其他屏幕以反映它。

    如果您不想太长,您始终可以实现一种方法,从默认地址中提取公司名称,并默认将其保存到会话中,以便于检索。


    编辑:更好的主意。

    查看销售电子邮件模板,有两种方法用于获取客户姓名:

    $order->getCustomerName();
    $order->getBillingAddress()->getName();
    

    我没有看到对公司名称的任何单独引用,因此您应该能够将这两种方法替换为您自己的方法并获得所需的结果。您需要创建自己的模块并覆盖客户/地址和销售/订单的模型(其他人在其他地方对此进行了深入介绍)。然后创建如下所示的方法:

    public function getCustomerName() {
        if($this->getBillingAddress()->getCompany()) {
            return $this->getBillingAddress()->getCompany();
        }
    
        return parent::getCustomerName();
    }
    

    以上是销售订单的示例,请根据客户进行相应修改。现在,您的公司名称将在可用时使用,当它们不可用时,将回退到原始实施(客户名称)。

    希望有帮助!

    谢谢, 乔


    您对通用应用程序的看法是正确的。如果您确实只想要电子邮件,那么问题是您是否可以在需要的地方访问自定义功能。如果手边没有对象,我不肯定你将能够调用你需要的任何方法。

    在这种情况下可行的一种方法是覆盖下面提到的两个对象,而是向它们添加一个 getCompanyName 方法。这样一来,您就可以调用正确的对象,并且可以根据需要专门编辑电子邮件。

    【讨论】:

    • 谢谢约瑟夫。说得通。你对这方面的文档有什么建议吗?
    • 再次感谢。这是一个非常明显的例子。覆盖模型的方法听起来很合适。这样(我想),它对整个 Magento 站点都是通用的,不是吗?现在,如果客户想让它只在电子邮件中显示公司,我想我可以简单地添加一个自定义函数来完成上述逻辑而不需要进入模型?还是我应该仍然像上面那样创建,只是将 Magento 配置为仅使用该模块来发送电子邮件? (我不确定 100% 的 Magento 中的所有定制是如何工作的......),谢谢。
    • 太好了,这给了我一个很好的前进方向。非常感谢。
    猜你喜欢
    • 2019-05-19
    • 2016-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多