2010-09-09 42 views
3

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

这是一个全球性的设置?

在此先感谢。

回答

3

Magento在默认情况下将客户的地址存储在商家名称中,因此有点难以实现。

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

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


编辑:更好的主意。

通过销售邮件模板来看,有一些是用来抢客户的姓名两种方法:

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

我没有看到公司名称的独立引用,所以你应该能够用这两种方法替代你自己的方法并获得理想的结果。您需要创建自己的模块并覆盖客户/地址和销售/订单的模型(其他人已经在其他地方深入讨论过)。然后创建如下所示的方法:

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

    return parent::getCustomerName(); 
} 

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

希望有帮助!

谢谢, 乔


您将普遍应用正确的。如果您确实只需要电子邮件,那么您是否有权在需要的地方访问您的自定义功能。如果没有任何方便的话,我不确定你能够调用任何你需要的方法。

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

+0

谢谢约瑟夫。说得通。你有关于这方面的文档的任何建议吗? – Rob 2010-09-09 13:50:34

+0

再次,谢谢。这是一个非常明确的例子。覆盖模型的方法听起来很理想。这种方式(我认为),这将是整个Magento网站的普遍性,不是吗?现在,如果客户希望只在电子邮件中显示公司,我认为我可以简单地添加一个自定义函数来执行上述逻辑,而不需要访问模型?或者我应该仍然创建如上,并配置Magento只使用该模块的电子邮件? (我不能确定100%Magento中所有的cusomizations是如何工作的......),谢谢。 – Rob 2010-09-09 15:50:55

+0

太棒了,这给了我一个很好的方向,非常感谢。 – Rob 2010-09-10 13:19:53