Ich versuche, verschachtelte if-Anweisungen in meiner E-Mail-Vorlage wie folgt zu verwenden:
{{if subscriber.promo_group}}
<p>You are one of the first {{var subscriber.promo_group}} subscribers.</p>
{{/if}}
{{if subscriber.coupon_code}}
<p>Use code {{htmlescape var=$subscriber.coupon_code}} for {{htmlescape var=$subscriber.discount_amount}} off.</p>
{{if subscriber.partner_coupon_code}}
<p>Or, code {{var subscriber.partner_coupon_code}} for {{htmlescape var=$subscriber.partner_discount_amount}} off at checkout.</p>
{{/if}}
{{else}}
{{if subscriber.partner_coupon_code}}
<p>Use code {{htmlescape var=$subscriber.partner_coupon_code}} for {{htmlescape var=$subscriber.partner_discount_amount}} off at checkout.</p>
{{/if}}
{{/if}}
Wenn ich meine E-Mail erhalte, erhalte ich sie jedoch folgendermaßen:
You are one of the first 20 subscribers.
Use code XXXXX-QTEALK15 for $35 off.
Or, code XXXXX10OFF for 10% off at checkout.
{{else}}
Use code XXXXX10OFF for 10% off at checkout.
{{/if}}
Ist es möglich, verschachtelte if-Anweisungen in den Magento-E-Mail-Vorlagen zu verwenden?
email
email-templates
Laura
quelle
quelle
Antworten:
Wenn Sie sich den Beginn der
Varien_Filter_Template
Klasse ansehen, finden Sie die folgenden zwei Konstanten.Im regulären Ausdruck von werden
CONSTRUCTION_IF_PATTERN
Sie feststellen, dass es die Form von hatDaher ist es leider
if
nicht möglich, Anweisungen zu verschachteln , da die erste Übereinstimmung{{/if}}
im regulären Ausdruck abgefangen wird.Obwohl die Klasse etwas anderes als die
{{if}}
Anweisungen bietet , die{{depend}}
Anweisung. Es ist fast das gleiche wie das,{{if}}
außer dass es keine{{else}}
Funktionalität hat.Glücklicherweise sind die verschachtelten Bedingungen in Ihrem Fall nicht kompliziert und können mit verwendet werden
{{depend}}
. Sie können also Folgendes haben:Wenn dies komplizierter sein muss, vereinfachen Sie Ihre Logik am besten mit einer Blockklasse für die Vorlage.
quelle
Ich habe noch nie versucht, Steueranweisungen wie diese zu verschachteln, aber eine mögliche Lösung (obwohl vielleicht etwas mehr Arbeit als Sie wünschen) besteht darin, eine Standardvorlage
.phtml
in Ihre E-Mail-Vorlage aufzunehmen.Der Core verwendet diese Funktion und kann sehr praktisch sein, wenn Sie PHP in Ihren E-Mail-Vorlagen ausführen müssen.
Schauen Sie sich an:
app/locale/en_US/template/email/sales/order_new.html
ebenso gut wie:
app/design/frontend/base/default/layout/sales.xml
order_new.html
Überprüfen Sie in der Vorlage Zeile 97 (oder so ungefähr), und Sie sehen diesen Aufruf:{{layout handle="sales_email_order_items" order=$order}}
Dieser Aufruf überprüft Ihre Layoutdateien auf das Handle
sales_email_order_items
. Insales.xml
finden Sie dies in der Nähe von Zeile 268. Sie sehen diesemail/order/invoice/items.phtml
(unter anderem) in der Vorlage .Von hier aus ist alles ziemlich normales Magento-Layout. Wenn Sie sich die
items.phtml
Vorlage ansehen , werden Sie als Erstes feststellen, dass sie die$_order
Variable zuweist . Dies wird im Layout-Handle der E-Mail-Vorlage als übergebenorder=$order
. Sobald Sie sich damit befassenitems.phtml
, weisen sie diese Variable nur mit zu$this->getOrder()
.quelle