4

カスタムコードに行き詰まっています。

メール テンプレートから pthml ファイルにカスタム変数を渡したい。

ファイルを編集

app/code/local/Mage/Sales/Model/Order.php

この関数で:

public function sendNewOrderEmail()
  {

--- default code start ----
$mailer->setTemplateParams(array(
                'order'        => $this,
                'test'        => 'XXXXX',
                'billing'      => $this->getBillingAddress(),
                'payment_html' => $paymentBlockHtml
            )
        );
--- default code end ----
}

次に、このコードを New Order メール テンプレートに挿入します。

{{layout handle="sales_email_order_items" order=$order  test=$test}}

ここにあるテンプレートファイル:

app/locale/en_US/template/email/sales/order_new.html

ここでテスト変数を取得しようとしています:

app/design/frontend/default/default/template/email/order/items/order/default.phtml

このような:$test = $this->getItem()->getTest()

しかし成功しない。どこが間違っているのか教えてください。または、phtmlファイルでこの変数にアクセスするにはどうすればよいですか?

4

2 に答える 2

2

メール テンプレートで変数を取得するには

{{変数テスト}}

@ Defining Transactional Variablesをご覧ください

于 2013-12-26T14:47:08.037 に答える
2

ここでの問題は、「テスト」値が、「email/order/items.phtml」テンプレートを使用するメイン ブロック Mage_Sales_Block_Order_Email_Items に送られることです。

そこには、次を使用してデータを見つけることができます。

<?php $test = $this->getTest(); // or $this->getData('test') ?>

その後、このデータをレジストリに追加できます。

しかし、より良い方法は、電子メールの前に注文アイテムにこの情報を送信することです. $mailer->setTemplateParams(); の前の email 関数では、次のようなコードを追加します。

//$this = current order if you are in Mage_Sales_Model_Order
foreach ($this->getAllVisibleItems() as $item) {
    $item->setData('test', 'test_value_10');
}
于 2015-02-03T12:58:30.910 に答える