2010-09-09 39 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