2012-07-09 104 views
7

我創建了一個「公司名稱」屬性,該屬性被添加到我的客戶帳戶信息中,並且是必填字段。在訂單電子郵件模板中添加自定義屬性 - Magento

它在註冊,表單和編輯頁面上都被填滿,並且也被顯示在客戶網格的後端。

但是我無法在任何訂購電子郵件模板中顯示公司名稱。

我相信這是因爲在我的訂單表中既沒有任何一列叫'公司名',也沒有任何自定義變量,我可以通過訂單/發票/裝運模板在行後面顯示公司名稱客戶的名字。

任何一個可以指出該文件在那裏我可以創建這個自定義變量包含我的自定義「公司名稱」屬性,並把它傳遞給所有類型的銷售郵件模板

感謝

回答

17

搜索一點點後我找到了正確的文件來進行更改。因爲我已經有「公司名稱」作爲我的一個屬性我取回此字段的值,並通過它在以下功能

應用程序/代碼/核心/法師/銷售/型號設置了一個param/Order.php

public function sendNewOrderEmail() 
{ 
/*Existing Code*/ 
if ($this->getCustomerIsGuest()) { 
     $templateId = Mage::getStoreConfig(self::XML_PATH_EMAIL_GUEST_TEMPLATE, $storeId); 
     $customerId = Mage::getModel('customer/customer')->load($this->getCustomerId()); 
     $companyname = $customerId->getCompanyname(); 
     $customerName = $this->getBillingAddress()->getName(); 
    } else { 
     $templateId = Mage::getStoreConfig(self::XML_PATH_EMAIL_TEMPLATE, $storeId); 
     $customerId = Mage::getModel('customer/customer')->load($this->getCustomerId()); 
     $companyname = $customerId->getCompanyname(); 
     $customerName = $this->getCustomerName(); 
    } 
    /*Existing Code*/ 
    $mailer->setTemplateParams(array(
     'order'  => $this, 
     'billing'  => $this->getBillingAddress(), 
     'payment_html' => $paymentBlockHtml, 
     'companyname' => $companyname 
    )); 
    /*Rest of the code remains the same*/ 
} 

進行此更改後。我編輯了我的交易電子郵件以包含此參數。因爲我想裏面的送貨地址顯示,我把我的變量只是此行

System > Transactional Emails > New Order Email 

    {{ var companyname }} 
    {{var order.getShippingAddress.format('html')}} 

之前,如果你的公司名稱是越來越保存客戶信息的一部分,那麼這將在「送貨地址得到顯示在您的訂單電子郵件'信息在開始。

對於發票和發貨郵件,您可以做同樣的事情。

希望這可以幫助別人! :-)

+2

你不應該在任何情況下編輯核心文件! ...如果您沒有看到其他機會更改核心代碼,請複製該文件並將其放入app/code/local/Mage/Sales/Model/Order.php – 2017-07-03 14:00:51

相關問題