Zeile in Transaktions-E-Mail anzeigen, wenn die Zahlungsmethode ist
8
Ich möchte eine Zeile nur anzeigen, wenn der Kunde die Zahlungsanweisung für die Zahlungsmethode "Kasse" auswählt. Wenn ein Kunde eine Zahlungsanweisung als Zahlungsmethode auswählt, möchte ich <li>der Transaktions-E-Mail eine zusätzliche Zeile anzeigen .
Wenn der Kunde eine andere Zahlungsmethode auswählt, sollte die zusätzliche <li>ausgeblendet werden.
Ich habe diesen Code ausprobiert, aber das funktioniert nicht:
In diesem Fall können Sie dies per Handler verwalten.
Handler verwenden:
Erstellen Sie einen Handler und definieren Sie ihn in der Layoutdatei:
create a handlerund mit diesem Handler wurde eine HTML-Datei gerendert. Ein local.xmlbei app/design/frontend/YOUR_PAackage/YOUR_template/layoutHandler definieren.
Code der Layoutdatei wie:
<?xml version="1.0"?><layoutversion="0.1.0"><!-- add new handler --><amit_customer_addhan><blocktype="core/template"name="addNewLi"template="sales/showcheckmo.phtml"/></amit_customer_addhan></layout>
Rufen Sie diesen Handler unter der E-Mail-Vorlage auf
Dann on email html call this handler(locale/YourLANG/template/email/)
Versuchte das, aber das hat auch nicht funktioniert :(
JGeer
0
Ich werde versuchen, Ihre erste Frage zu beantworten - wie man eine Direktive mit Bedingung verwendet. Zum Debuggen benutze ich xDebug. Und meiner Meinung nach ist es sehr schwierig, E-Mails zu debuggen. In diesem Fall zeige ich Ihnen ein Beispiel mit derselben Struktur in einem anderen Teil von Magento.
Bei Verkauf / Bestellung / Ansicht gibt es die gleiche Struktur. Die Adressenausgabestruktur bestimmt in Mage/Core/etc/config.xmlin default/customer/address_templates/text.
Unsere Aufgabe wird es sein, eine Bedingung hinzuzufügen, um den 'Firmennamen' anzuzeigen oder nicht anzuzeigen. Richtlinien wie var , abhängen , wenn Parse in Varien_Filter_TemplateMethode Filter ($ value) . Bei dieser Methode werden alle $ -Konstruktionen (if / abhängige / var) und jede in diesem Aufruf verwendete $ -Konstruktion iteriert:
// If object calling methods or getting properties
Um eine Bedingung zu stellen, sollten unsere $ stackVars ein Objekt und ein Instace von Varien_Object sein (die meisten Modelle erstrecken sich von Mage_Core_Model_Abstract, das sich von Varien_Object erstreckt). Lass uns ein paar Schritte nach oben klettern. Wir müssen stackVars und object hinzufügen.
In meinem Beispiel in der Klasse Mage_Customer_Block_Address_Renderer_Default ruft magento den oben erwähnten Methodenfilter ($ value) auf.
Hier biete ich eine Lösung. Warnung! Diese Lösung ist nicht sehr sauber. Es ist beabsichtigt, magento Verhalten zu zeigen. Bitte schreiben Sie alles neu.
Bei dieser Methode fügen wir dem $ data-Array ein Auftragsobjekt hinzu. Entsprechend meiner Aufgabe können wir diesem Array ein Bestellobjekt hinzufügen. Tun Sie es vor '$ formater-> setVariables ($ data);'
$data['order_object']= $address->getOrder();
Danach analysiert Magento dieses Objekt und ruft eine beliebige Methode auf. Zum Beispiel fügen wir die neue Methode getPaymentOutput () hinzu. Fügen Sie der Order-Klasse einfache Funktionen hinzu:
quelle
Ich werde versuchen, Ihre erste Frage zu beantworten - wie man eine Direktive mit Bedingung verwendet. Zum Debuggen benutze ich xDebug. Und meiner Meinung nach ist es sehr schwierig, E-Mails zu debuggen. In diesem Fall zeige ich Ihnen ein Beispiel mit derselben Struktur in einem anderen Teil von Magento.
Bei Verkauf / Bestellung / Ansicht gibt es die gleiche Struktur. Die Adressenausgabestruktur bestimmt in
Mage/Core/etc/config.xml
indefault/customer/address_templates/text
.Unsere Aufgabe wird es sein, eine Bedingung hinzuzufügen, um den 'Firmennamen' anzuzeigen oder nicht anzuzeigen. Richtlinien wie var , abhängen , wenn Parse in
Varien_Filter_Template
Methode Filter ($ value) . Bei dieser Methode werden alle $ -Konstruktionen (if / abhängige / var) und jede in diesem Aufruf verwendete $ -Konstruktion iteriert:Für jedes if / depende / var gibt es eine eigene Methode. Schauen wir uns das an
public function ifDirective($construction)
Schauen wir uns nun die geschützte Methode _getVariable an. Ich möchte Ihre Aufmerksamkeit auf eine Reihe lenken:
und schauen Sie sich den Kommentar unten an:
Um eine Bedingung zu stellen, sollten unsere $ stackVars ein Objekt und ein Instace von Varien_Object sein (die meisten Modelle erstrecken sich von Mage_Core_Model_Abstract, das sich von Varien_Object erstreckt). Lass uns ein paar Schritte nach oben klettern. Wir müssen stackVars und object hinzufügen.
In meinem Beispiel in der Klasse Mage_Customer_Block_Address_Renderer_Default ruft magento den oben erwähnten Methodenfilter ($ value) auf.
Hier biete ich eine Lösung. Warnung! Diese Lösung ist nicht sehr sauber. Es ist beabsichtigt, magento Verhalten zu zeigen. Bitte schreiben Sie alles neu.
Bei dieser Methode fügen wir dem $ data-Array ein Auftragsobjekt hinzu. Entsprechend meiner Aufgabe können wir diesem Array ein Bestellobjekt hinzufügen. Tun Sie es vor '$ formater-> setVariables ($ data);'
Danach analysiert Magento dieses Objekt und ruft eine beliebige Methode auf. Zum Beispiel fügen wir die neue Methode getPaymentOutput () hinzu. Fügen Sie der Order-Klasse einfache Funktionen hinzu:
und erst danach nehmen wir Änderungen an der XML-Direktive vor:
quelle