Gibt es eine Möglichkeit, eine foreach-Schleife in der E-Mail-Vorlage hinzuzufügen?


10

Ich versuche, eine E-Mail an den Kunden auszulösen, nachdem dieser eine Bestellung aufgegeben hat. Diese E-Mail enthält alle Cross-Selling-Produkte der bestellten Produkte.

Ich habe die folgenden Links als Referenz verwendet:

E-Mail mit Event Observer senden

Erweiterte Transaktions-E-Mail-Vorlagen

Alles funktioniert gut.

Aber jetzt ist mein Zweifel, ob ich in der Lage sein werde, eine foreach-Schleife in der HTML-Datei zu verwenden, die sich im Gebietsschemaverzeichnis befindet .

Damit ich alle Produktinformationen in der Mail-Vorlage iterieren und ausdrucken kann. Kann jemand helfen?

Antworten:


21

Ich denke, dass es nicht möglich ist, eine foreach-Schleife in E-Mails direkt auszuführen, aber Sie könnten einen Block einfügen, der die Schleife in einer regulären Vorlage ausführt.

Fügen Sie in Ihrer E-Mail Folgendes hinzu.

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

Fügen Sie dann in Ihrer Vorlage Folgendes hinzu.

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

Für weitere Informationen bin ich diesem Blog gefolgt


Ja, ich habe es tatsächlich versucht. wird dies in 2 Minuten akzeptieren
Shathish

Müssen wir diesen Block in die E-Mail-Vorlage einfügen? Und wird es verstehen items=$items? Wie $itemsist PHP-Variable.
Akshay Taru

Hallo, ich habe oben versucht, nicht für mich zu arbeiten. Irgendwelche Vorschläge
Akshay Taru

0

Tatsächlich können Sie eine for-Schleife in E-Mails verwenden. Ich habe es auf 2.3.3 Version getestet. Dies ist der zu überprüfende Code- Speicherort . So sieht es in der Vorlage aus:

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

Die Transportinformationen:

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

Beiseite. In 2.3.4 wurde der Code überarbeitet , aber ich glaube, er sollte immer noch funktionieren, da er nicht entfernt wurde. Bitte denken Sie daran, dass Magento ab dieser Version die Möglichkeit zum Aufrufen von Funktionen für Objekte entfernt hat, sodass Ihre order->getItems()Funktion möglicherweise nicht funktioniert.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.