Отображать строку в транзакционном электронном письме, если выбран способ оплаты
8
Я хочу отображать строку только тогда, когда клиент выбирает способ оплаты заказа денежным переводом. Когда клиент выбирает денежный перевод в качестве способа оплаты, я хочу отобразить <li>дополнительную строку в электронном сообщении о транзакции.
Если клиент выбирает другой способ оплаты, дополнительный <li>должен быть скрыт.
В этом случае вы можете управлять этим обработчиком.
Использовать обработчик:
Создайте обработчик и определите его в файле макета:
create a handlerи с помощью этого обработчика визуализировал файл phtml. На local.xmlв app/design/frontend/YOUR_PAackage/YOUR_template/layoutопределите обработчик.
Код файла макета, например:
<?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>
Позвоните этому обработчику в шаблоне электронной почты
затем on email html call this handler(locale/YourLANG/template/email/)
Я постараюсь ответить на ваш первоначальный вопрос - как использовать директиву с условием. Для отладки я использую xDebug. И по моему мнению, это очень трудно для отладки электронных писем. В этом случае я покажу вам пример с той же структурой в другой части magento.
На продажах / заказах / просмотрах есть такая же структура. Структура вывода адреса определяется Mage/Core/etc/config.xmlв default/customer/address_templates/text.
Наша задача будет добавить любое условие, чтобы показать или не показывать «название компании». Директивы , такие как вар , зависят , если синтаксический анализ в Varien_Filter_Templateв методе фильтре ($ значения) . В этом методе есть итерация всех $ конструкций (если / зависит / var) и каждой конструкции, используемой в этом вызове:
// If object calling methods or getting properties
Таким образом, чтобы сделать условие, наши $ stackVars должны быть объектом и источником Varien_Object (большинство моделей расширяется от Mage_Core_Model_Abstract, который расширяется от Varien_Object). Давайте поднимемся на несколько ступеней выше. Нам нужно добавить в stackVars и объект.
В моем примере в классе Mage_Customer_Block_Address_Renderer_Default magento вызывает метод filter ($ value), о котором я упоминал выше.
Здесь я предоставляю решение. Предупреждение! Это решение не очень чистое. Это цель показать поведение magento. Пожалуйста, все переписываете сами.
В этом методе мы добавим объект заказа в массив данных. В соответствии с моей задачей давайте добавим объект заказа в этот массив. Сделайте это до '$ formater-> setVariables ($ data);'
$data['order_object']= $address->getOrder();
После этого magento проанализирует этот объект и вызовет любой его метод. Например, мы добавляем новый метод getPaymentOutput (). Поместите простую функциональность в класс Order:
источник
Я постараюсь ответить на ваш первоначальный вопрос - как использовать директиву с условием. Для отладки я использую xDebug. И по моему мнению, это очень трудно для отладки электронных писем. В этом случае я покажу вам пример с той же структурой в другой части magento.
На продажах / заказах / просмотрах есть такая же структура. Структура вывода адреса определяется
Mage/Core/etc/config.xml
вdefault/customer/address_templates/text
.Наша задача будет добавить любое условие, чтобы показать или не показывать «название компании». Директивы , такие как вар , зависят , если синтаксический анализ в
Varien_Filter_Template
в методе фильтре ($ значения) . В этом методе есть итерация всех $ конструкций (если / зависит / var) и каждой конструкции, используемой в этом вызове:Для каждого if / depende / var существует свой метод. Давайте посмотрим на
public function ifDirective($construction)
Теперь давайте посмотрим на защищенный метод _getVariable. Я хотел бы обратить ваше внимание на один ряд:
и посмотрите на комментарий ниже:
Таким образом, чтобы сделать условие, наши $ stackVars должны быть объектом и источником Varien_Object (большинство моделей расширяется от Mage_Core_Model_Abstract, который расширяется от Varien_Object). Давайте поднимемся на несколько ступеней выше. Нам нужно добавить в stackVars и объект.
В моем примере в классе Mage_Customer_Block_Address_Renderer_Default magento вызывает метод filter ($ value), о котором я упоминал выше.
Здесь я предоставляю решение. Предупреждение! Это решение не очень чистое. Это цель показать поведение magento. Пожалуйста, все переписываете сами.
В этом методе мы добавим объект заказа в массив данных. В соответствии с моей задачей давайте добавим объект заказа в этот массив. Сделайте это до '$ formater-> setVariables ($ data);'
После этого magento проанализирует этот объект и вызовет любой его метод. Например, мы добавляем новый метод getPaymentOutput (). Поместите простую функциональность в класс Order:
и только после этого мы вносим изменения в директиву xml следующим образом:
источник