注文後、お客様にメールを送信しようとしています。このメールには、注文した製品のすべてのクロスセル製品が記載されています。
参考として次のリンクを使用しました。
すべて順調です。
しかし、私の疑問は、ロケールディレクトリ内に配置されたhtmlファイル内でforeachループを使用できるかどうかです。
メールテンプレートのすべての製品情報を繰り返して印刷できるようにしました。誰か助けてもらえますか?
注文後、お客様にメールを送信しようとしています。このメールには、注文した製品のすべてのクロスセル製品が記載されています。
参考として次のリンクを使用しました。
すべて順調です。
しかし、私の疑問は、ロケールディレクトリ内に配置されたhtmlファイル内でforeachループを使用できるかどうかです。
メールテンプレートのすべての製品情報を繰り返して印刷できるようにしました。誰か助けてもらえますか?
回答:
電子メールで直接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; ?>
詳細については、このブログをフォローしました
items=$items
ますか?$items
php変数と同様です。
実際には、メールで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()
関数が機能しない可能性があることに注意してください。