電子メールテンプレートにforeachループを追加する方法はありますか?


10

注文後、お客様にメールを送信しようとしています。このメールには、注文した製品のすべてのクロスセル製品が記載されています。

参考として次のリンクを使用しました。

イベントオブザーバーを使用してメールを送信する

高度なトランザクションメールテンプレート

すべて順調です。

しかし、私の疑問は、ロケールディレクトリ内に配置されたhtmlファイル内でforeachループを使用できるかどうかです。

メールテンプレートのすべての製品情報を繰り返して印刷できるようにしました。誰か助けてもらえますか?

回答:


21

電子メールで直接foreachループを実行することは不可能だと思いますが、できることは、通常のテンプレートでループを実行するブロックを含めることです。

メールに次のようなものを追加します。

{{block type='core/template' area='frontend' template='email/template.phtml' items=$items}}

次に、テンプレートに以下を追加します。

<?php foreach ($this->getItems() as $_item): ?>
    <p><?php echo $_item['name'] ?></p>
<?php endforeach; ?>

詳細については、このブログをフォローしました


ええ、私は実際にこれを試していました。これは2分後に受け入れられます
Shathish 2013

電子メールテンプレート内にこのブロックを追加する必要がありますか?そして、それは理解しitems=$itemsますか?$itemsphp変数と同様です。
Akshay Taru

こんにちは、私は私のために働いていない上で試してみました。任意の提案
Akshay Taru

0

実際には、メールでforループを使用できます。2.3.3バージョンでテストしました。これは、検査するコードの場所です。これは、テンプレートでは次のようになります。

<ul>
  {{for item in data.items}}
     <li>Name: {{var item.name}}</li>
  {{/for}}
</ul>

輸送情報:

$this->transportBuilder->setTemplateVars(
[
 'items' => [
              ['name' => 'Product1'],
              ['name' => 'Product2']
            ]
...

さておき。2.3.4ではコードがリファクタリングされましたが、削除されなかったので、コードはまだ機能するはずです。Magentoはこのバージョンからオブジェクトの関数を呼び出す機能を削除したため、order->getItems()関数が機能しない可能性があることに注意してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.