Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在订单电子邮件模板中添加自定义属性-Magento_Php_Magento - Fatal编程技术网

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

Php 在订单电子邮件模板中添加自定义属性-Magento,php,magento,Php,Magento,我已经创建了一个“Companyname”属性,该属性被添加到客户的帐户信息中,是必填字段 它在注册、表单和编辑页面上被很好地填充,并在后端显示在客户的网格上 但是,我无法在任何订单电子邮件模板中显示公司名称 我相信这是因为我的订单表中没有任何名为“companyname”的列,也没有任何自定义变量,我可以将其传递到订单/发票/装运模板,以便在客户名称后的行旁边显示公司名称 有人能指出我可以在哪个文件中创建包含自定义“companyname”属性的自定义变量,并将其传递给所有类型的销售电子邮件模

我已经创建了一个“Companyname”属性,该属性被添加到客户的帐户信息中,是必填字段

它在注册、表单和编辑页面上被很好地填充,并在后端显示在客户的网格上

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

我相信这是因为我的订单表中没有任何名为“companyname”的列,也没有任何自定义变量,我可以将其传递到订单/发票/装运模板,以便在客户名称后的行旁边显示公司名称

有人能指出我可以在哪个文件中创建包含自定义“companyname”属性的自定义变量,并将其传递给所有类型的销售电子邮件模板吗


谢谢

经过一点搜索,我找到了进行更改的正确文件。因为我已经将“companyname”作为属性之一,所以我检索了该字段的值,并将其作为参数传递到以下函数中

app/code/core/Mage/Sales/Model/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')}}
如果您的公司名称被保存为客户信息的一部分,那么这将在开始时显示在您的订单电子邮件中的“发货地址”信息中

您可以对发票和装运电子邮件执行相同的操作


希望这对别人有帮助!!!:-)

在任何情况下,您都不应该编辑核心文件…如果您没有看到任何其他更改核心代码的机会,请复制该文件并将其放入app/code/local/Mage/Sales/Model/Order.php中