Шаблоны электронной почты в Magento: блоки не отображаются из adminhtml
Боюсь, я наткнулся на неизвестную территорию Magento. Я исчерпал то, что осталось от моих способностей Googling, и потерпел неудачу, поэтому я решил попытать счастья здесь.
Наша платформа Magento Enterprise 1.9.1.1.
Мы используем архаичное решение для печати, которое читает заказы через ODBC. Таким образом, мы не можем прочитать его непосредственно из базы данных MySQL Magento (благодаря высокой вероятности изменений). Что я сделал, так это расширил Mage_Sales_Model_Order для перехвата функции _beforeSave() с прямыми запросами SQL в другую базу данных перед возвратом parent::_beforeSave(). Вероятно, есть лучшие способы сделать это, но это сделано сейчас, и функционально, и, несмотря на это, это не то, где моя проблема.
Если выдается какая-либо ошибка SQL, обновления откатываются, а данные об ошибках и заказе передаются в функцию, которая отправляет электронное письмо в список рассылки с информацией об ошибке. Файл шаблона электронной почты в /locale/en_US/template/email/ вызывает файл.phtml для обработки массивов данных следующим образом:
{{block type='core/template' area='frontend' template='/email/errors/order/beforesave.phtml' orderdata=$orderdata errors=$errors}}
Это функциональность, которую я позаимствовал у /locale/en_US/template/email/sales/shipment_new.phtml. И это также, где я ударил свой контрольно-пропускной пункт. Электронная почта хорошо запускается из внешнего интерфейса, если при обработке заказа возникают ошибки. Если вы вносите изменения заказа из adminhtml, электронное письмо отправляется, но без вышеуказанного блока.
Я пробовал с и без area='frontend' в вызове блока, и скрипт демонстрирует одинаковое поведение независимо.
Я думаю, что проблема может быть в моем XML, хотя он находит, что сам шаблон прекрасно работает как от администратора, так и от внешнего интерфейса (и этот блок нигде не требуется определять в моем XML). Я также не могу найти никаких примеров этого в собственных файлах Magento или где-либо еще в Интернете.
Любая помощь будет более чем признательна. Это делает мою голову в!
- Майк
2 ответа
Возможно дублирование шаблона обмена между внешним интерфейсом и внутренним интерфейсом (admin или adminhtml) в magento.
Не хочу воскрешать мертвый вопрос; просто связываю свободный конец.
@ColinM: Мои мысли были такими же, как ваши, но это почему-то не сработало для меня. Может быть, я не понимаю цель setDesignConfig(). Во всяком случае, приведенная выше ссылка отлично сработала для меня в том же сценарии, что и у оригинального постера.
Вы устанавливаете "область" для фактического шаблона электронной почты? Например:
$emailTemplate = Mage::getModel('core/email_template');
$emailTemplate
->setDesignConfig(array('area' => 'frontend', 'store' => $storeId));