2

我担心我偶然发现了未知的 Magento 领域。我已经用尽了我的谷歌搜索能力,而且还不够,所以我想我会在这里碰碰运气。

我们的平台是 Magento Enterprise 1.9.1.1。

我们使用一种古老的打印解决方案,通过 ODBC 读取订单。因此,我们不能直接从 Magento 的 MySQL 数据库中读取它(由于更改的可能性很高)。我所做的是扩展 Mage_Sales_Model_Order 以在返回 parent::_beforeSave() 之前通过直接 SQL 查询来拦截 _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 自己的文件或互联网上的任何地方也找不到任何这样的例子。

任何帮助将不胜感激。这让我头疼!

  • 麦克风
4

2 回答 2

0

您是否为实际的电子邮件模板设置“区域”?例如:

$emailTemplate = Mage::getModel('core/email_template');    
$emailTemplate
  ->setDesignConfig(array('area' => 'frontend', 'store' => $storeId));
于 2011-07-19T16:40:59.040 回答
0

magento 中前端和后端(admin 或 adminhtml)之间的共享模板可能重复。

不要想复活一个死问题;只是把松散的一端绑起来。

@ColinM:我的想法和你的一样,但不知何故对我不起作用。也许我不明白 setDesignConfig() 的目的。无论如何,在与原始海报相同的情况下,上面的链接对我来说非常有效。

于 2012-12-27T18:49:49.417 回答