Magento电子邮件模板:无法从adminhtml呈现的块

时间:2011-05-26 03:44:21

标签: email templates magento block adminhtml

我担心我偶然发现了未知的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自己的文件中或互联网上的任何地方找到任何这方面的例子。

任何帮助都会非常感激。这是我的头脑!

  • 麦克

2 个答案:

答案 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()的目的。无论如何,上面的链接对我来说非常合适,与原始海报的情况相同。