【问题标题】:Magento Email Templates: Blocks not rendering from adminhtmlMagento 电子邮件模板:块不从 adminhtml 呈现
【发布时间】:2011-05-26 03:44:20
【问题描述】:

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

我们的平台是 Magento Enterprise 1.9.1.1。

我们使用一种古老的打印解决方案,通过 ODBC 读取订单。因此,我们不能直接从 Magento 的 MySQL 数据库中读取它(由于更改的可能性很高)。我所做的是扩展 Mage_Sales_Model_Order 以拦截 _beforeSave() 函数,并在返回 parent::_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 中,尽管它发现模板本身从管理员和前端都很好(并且这个块不需要在我的 XML 的任何地方定义)。我也无法在 Magento 自己的文件或 Internet 上的任何地方找到任何此类示例。

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

  • 迈克

【问题讨论】:

    标签: email templates magento block adminhtml


    【解决方案1】:

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

    $emailTemplate = Mage::getModel('core/email_template');    
    $emailTemplate
      ->setDesignConfig(array('area' => 'frontend', 'store' => $storeId));
    

    【讨论】:

      【解决方案2】:

      sharing template between frontend and backend (admin or adminhtml) in magento 可能重复。

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

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

      【讨论】:

        猜你喜欢
        • 2013-01-14
        • 2022-01-20
        • 1970-01-01
        • 1970-01-01
        • 2020-09-18
        • 1970-01-01
        • 1970-01-01
        • 2022-01-24
        相关资源
        最近更新 更多