Apakah ada cara untuk menambahkan foreach loop di templat email?

10

Saya mencoba memicu surat kepada pelanggan setelah mereka melakukan pemesanan. Email ini akan membawa semua produk cross selling dari produk yang dipesan.

Saya menggunakan tautan berikut sebagai referensi:

kirim email menggunakan pengamat acara

Template Email Transaksional Tingkat Lanjut

Semua bekerja dengan baik.

Tapi sekarang keraguan saya adalah, apakah saya bisa menggunakan foreach loop di dalam file html yang dimasukkan ke dalam direktori lokal ?

Sehingga saya bisa mengulang dan mencetak semua info produk di templat email. Adakah yang bisa membantu?

Shathish
sumber

Jawaban:

21

Saya pikir tidak mungkin melakukan loop foreach secara langsung dalam email, tetapi yang bisa Anda lakukan adalah menyertakan blok yang akan melakukan loop dalam template biasa.

Di email Anda tambahkan sesuatu seperti berikut ini.

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

Kemudian di templat Anda tambahkan berikut ini.

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

Untuk informasi lebih lanjut saya mengikuti blog ini

David Manners
sumber
Ya saya sebenarnya sudah mencoba ini. akan menerima ini dalam 2 menit
Shathish
Apakah kita harus menambahkan blok ini di dalam template email? Dan apakah itu akan mengerti items=$items? Seperti $itemsvariabel php.
Akshay Taru
Hai, saya mencoba di atas tidak bekerja untuk saya. Ada saran
Akshay Taru
0

Sebenarnya Anda bisa menggunakan for for di email. Saya sudah mengujinya pada versi 2.3.3. Ini adalah lokasi kode untuk diperiksa. Beginilah tampilannya dalam templat:

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

Informasi transportasi:

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

Ke samping. Dalam 2.3.4 kode itu dire - refoured , tapi saya percaya masih harus berfungsi karena tidak dihapus. Harap diingat bahwa Magento menghapus kemampuan untuk memanggil fungsi pada objek pada versi ini, jadi order->getItems()fungsi Anda mungkin tidak berfungsi.

augsteyer
sumber