我担心我偶然发现了未知的Magento领土。我已经筋疲力尽了我的谷歌搜索能力,并且做得很短,所以我想我会在这里试试运气。
我们的平台是Magento Enterprise 1.9.1.1。
我们使用古老的打印解决方案,通过ODBC读取订单。因此,我们不能直接从Magento的MySQL数据库中读取(由于很有可能发生变化)。在返回parent :: _ beforeSave()之前,我所做的是扩展Mage_Sales_Model_Order以截取_beforeSave()函数,并使用直接SQL查询到另一个数据库。有可能有更好的方法来做到这一点,但它现在已经完成,并且功能齐全,而且不管它不是我的问题所在。
如果抛出任何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中,尽管它发现模板本身在admin和frontend中都很好(并且这个块不需要在我的XML中定义)。我也无法在Magento自己的文件中或互联网上的任何地方找到任何这方面的例子。
任何帮助都会非常感激。这是我的头脑!
答案 0 :(得分:0)
您是否为实际的电子邮件模板设置了“区域”? E.g:
$emailTemplate = Mage::getModel('core/email_template');
$emailTemplate
->setDesignConfig(array('area' => 'frontend', 'store' => $storeId));
答案 1 :(得分:0)
sharing template between frontend and backend (admin or adminhtml) in magento可能重复。
不是要复活一个死的问题;只是把松散的一端捆绑起来。
@ColinM:我的想法和你的想法一样,但不知何故对我不起作用。也许我不明白setDesignConfig()的目的。无论如何,上面的链接对我来说非常合适,与原始海报的情况相同。