Добавьте пользовательский атрибут в шаблоны электронной почты для заказа - Magento


Я создал атрибут "Имя компании", который добавляется в информацию об учетной записи моего клиента и является обязательным полем.

Он заполняется на страницах регистрации, формы и редактирования, а также отображается в сетке клиента в фоновом режиме.

Однако я не могу отобразить название компании ни в одном из шаблонов электронной почты для заказа.

Я полагаю, что это связано с тем, что в моих таблицах заказов нет ни одного столбца с названием "имя компании", и у меня нет никаких пользовательских переменная, которую я могу передать в шаблоны заказов/счетов/отгрузок для отображения названия компании рядом со строкой после имени клиента.

Может ли кто-нибудь указать файл, в котором я могу создать эту пользовательскую переменную, содержащую мой пользовательский атрибут "имя компании", и передать его во все типы шаблонов электронной почты для продаж

Спасибо

Author: ivn, 2012-07-09

1 answers

После небольшого поиска я нашел нужный файл для внесения изменений. Поскольку у меня уже было "имя компании" в качестве одного из моих атрибутов, я извлек значение этого поля и передал его в качестве параметра в следующей функции

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')}}

Если имя вашей компании сохраняется как часть информации о клиенте, то оно будет отображаться в вашем электронном письме с заказом в разделе "Адрес доставки" в самом начале.

Вы можете сделать то же самое для электронных писем со счетами и отправками.

Надеюсь, это кому-то поможет!!! :-)

 19
Author: ivn, 2014-02-28 12:08:35