在订单电子邮件模板中添加自定义属性 - Magento

问题描述:

我创建了一个“公司名称”属性,该属性被添加到我的客户帐户信息中,并且是必填字段。在订单电子邮件模板中添加自定义属性 - Magento

它在注册,表单和编辑页面上都被填满,并且也被显示在客户网格的后端。

但是我无法在任何订购电子邮件模板中显示公司名称。

我相信这是因为在我的订单表中既没有任何一列叫'公司名',也没有任何自定义变量,我可以通过订单/发票/装运模板在行后面显示公司名称客户的名字。

任何一个可以指出该文件在那里我可以创建这个自定义变量包含我的自定义“公司名称”属性,并把它传递给所有类型的销售邮件模板

感谢

搜索一点点后我找到了正确的文件来进行更改。因为我已经有“公司名称”作为我的一个属性我取回此字段的值,并通过它在以下功能

应用程序/代码/核心/法师/销售/型号设置了一个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