มีวิธีเพิ่ม foreach loop ในเทมเพลตอีเมลหรือไม่?


10

ฉันกำลังพยายามที่จะทริกเกอร์อีเมลให้กับลูกค้าหลังจากที่พวกเขาสั่งซื้อ อีเมลนี้จะดำเนินการผลิตภัณฑ์ที่ขายข้ามทั้งหมดของผลิตภัณฑ์ที่สั่งซื้อ

ฉันใช้ลิงค์ต่อไปนี้เป็นข้อมูลอ้างอิง:

ส่งอีเมลโดยใช้ผู้สังเกตการณ์เหตุการณ์

เทมเพลตอีเมลธุรกรรมขั้นสูง

ทั้งหมดทำงานได้ดี

แต่ตอนนี้ข้อสงสัยของฉันคือฉันจะสามารถใช้ foreach loop ในไฟล์ html ที่อยู่ในไดเรกทอรีlocale ได้หรือไม่?

เพื่อให้ฉันสามารถวนซ้ำและพิมพ์ข้อมูลผลิตภัณฑ์ทั้งหมดในแม่แบบจดหมาย ใครช่วยได้บ้าง

คำตอบ:


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

เราจำเป็นต้องเพิ่มบล็อกนี้ในเทมเพลตอีเมลหรือไม่ แล้วมันจะเข้าใจitems=$itemsไหม? เช่นเดียวกับ$itemsตัวแปร php
Akshay Taru

สวัสดีฉันพยายามที่จะไม่ทำงานกับฉัน ข้อเสนอแนะใด ๆ
Akshay Taru

0

จริงๆแล้วคุณสามารถใช้สำหรับการวนซ้ำในอีเมล ฉันได้ทำการทดสอบในเวอร์ชั่น 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 รหัสถูกrefactoredแต่ฉันเชื่อว่ามันยังคงทำงานได้เนื่องจากไม่ได้ลบออก โปรดจำไว้ว่า Magento ได้ลบความสามารถในการเรียกใช้ฟังก์ชั่นบนวัตถุในรุ่นนี้ดังนั้นorder->getItems()ฟังก์ชั่นของคุณอาจไม่ทำงาน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.