2012-07-09 11 views
7

お客様のアカウント情報に追加される 'Companyname'属性を作成しました。これは必須フィールドです。電子メールテンプレートにカスタム属性を追加する - Magento

登録、フォーム、編集のページがいっぱいになり、バックエンドの顧客のグリッドにも表示されます。

私の注文メールテンプレートの中に会社名を表示することはできません。

私の注文表に 'companyname'という列もなく、後に行の横に会社名を表示する注文/請求書/出荷テンプレートに渡すことができるカスタム変数がないためと考えています顧客の名前。

いずれかが、私は「会社名」属性を自分のカスタムを含むこのカスタム変数を作成し、検索の少し後に、販売メールテンプレートのすべてのタイプに

おかげ

答えて

17

を渡すことができ、ファイルを指摘することができます変更を加えるための正しいファイルが見つかりました。私はすでに、私は、このフィールドの値を取得して、以下の機能

アプリ/コード/コア/メイジ/販売/モデル/ Order.php

でのparamとして、それを渡された私の属性の一つとして、「仕入」を持っていたので、
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に配置します –

関連する問題