4

Magentoの新規注文メールの件名に支払い方法を表示させようとしています。その理由は、クライアントが Magento から送信された電子メールの件名から、注文が支払いゲートウェイまたは Paypal Express を介して行われたかどうかを簡単に判断できるようにするためです。

これを達成するための最良の方法については完全にはわかりませんが、これに使用できるものが既にあると思います。

{{var payment_html}}

メール テンプレートの支払い方法ブロックを返します...

{{var paymentMethod}}

メールの件名に何も返さないため、これが現在減価償却されている変数であるかどうかは不明です。

カスタム属性を作成し、それを静的ブロックで呼び出して、これを電子メール テンプレートのカスタム変数として表示するオプションもあると思いますが、純粋に「SagePay 経由で」というテキスト文字列を取得するためだけに、かなり長く曲がりくねったアプローチのようです。 」または「Paypal Express経由」。

どんな助けでも大歓迎です。

前もって感謝します。

4

2 に答える 2

20

実際にはカスタマイズを実行する必要はありません。この変数は、オブジェクトチェーンを介してテンプレートですでに使用可能です。このチェーンはMagentoテンプレートでサポートされており、オブジェクトのゲッターを使用できます。

この場合、注文の支払いオブジェクトを取得してから、そのメソッドインスタンスを取得し、メソッドインスタンスからメソッドタイトルを取得する必要があります。それは非常に単純な構造です:

{{var order.getPayment().getMethodInstance().getTitle()}}

これはあなたを助けるはずです!

于 2012-12-19T14:31:53.267 に答える
2

メソッド Mage_Sales_Model_Order::sendNewOrderEmail() は、新しい注文メールの送信を担当します。

$paymentBlock = Mage::helper('payment')->getInfoBlock($this->getPayment())
    ->setIsSecureMode(true);
$paymentBlock->getMethod()->setStore($storeId);
$paymentBlockHtml = $paymentBlock->toHtml();

...

$mailer->setTemplateParams(array(
    'order'        => $this,
    'billing'      => $this->getBillingAddress(),
    'payment_html' => $paymentBlockHtml
)

payment_html はブロックの html 出力にレンダリングされるため、使用できません。

支払い方法に関連付けキーをもう 1 つ (rewite または local/mage トリックを使用して) 追加し、トランザクション メールを使用してこのパラメーターを件名に追加できます。

于 2012-12-19T14:27:43.700 に答える