Magento Email Templates: Blocks not rendering from adminhtml

元气小坏坏 提交于 2019-12-10 23:13:53

问题


I fear I've stumbled into unknown Magento territory. I have exhausted what's left of my Googling abilities and have come up short, so I thought I'd try my luck here.

Our platform is Magento Enterprise 1.9.1.1.

We use an archaic print solution that reads orders via ODBC. As such, we can't have it read from Magento's MySQL database directly (thanks to the high likelihood of change). What I've done is extend Mage_Sales_Model_Order to intercept the _beforeSave() function with direct SQL queries to another database, before returning parent::_beforeSave(). There are likely better ways to have done this, but it's done now, and functional, and regardless it is not where my problem lies.

If any SQL errors are thrown, updates are rolled back and the errors & order data are passed to a function that sends an email to a mailing list with the error information. The email template file in /locale/en_US/template/email/ calls on a .phtml file to process the arrays of data like so:

{{block type='core/template' area='frontend' template='/email/errors/order/beforesave.phtml' orderdata=$orderdata errors=$errors}} 

This is functionality I borrowed from /locale/en_US/template/email/sales/shipment_new.phtml. And this is also where I hit my roadblock. The email fires fine from the front end, if errors are encountered when the user is processing an order. If you make order changes from adminhtml, the email is sent, but without the above mentioned block.

I have tried with and without area='frontend' in the block call, and the script exhibits the same behaviour regardless.

I think that the problem may be in my XML, though it finds the template itself just fine from both admin and frontend (and this block is not required to be defined in my XML anywhere). I can also not find any examples of this within Magento's own files, or anywhere on the internet.

Any help would be more than greatly appreciated. This is doing my head in!

  • Mike

回答1:


Are you setting the "area" for the actual email template? E.g.:

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



回答2:


Possible duplicate of sharing template between frontend and backend (admin or adminhtml) in magento.

Don't mean to revive a dead question; just tying up the loose end.

@ColinM: My thoughts were the same as yours, but that somehow didn't work for me. Maybe I don't understand the purpose of setDesignConfig(). Anyhow, the link above worked perfectly for me, in the same scenario as that of the original poster.



来源:https://stackoverflow.com/questions/6133435/magento-email-templates-blocks-not-rendering-from-adminhtml

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!