目标:每次发送交易电子邮件时,请在发送前通过帮助程序类传递模板文本字符串。
我基本上可以按照自己的意愿工作。除了一件有点烦人的事情。我已将/app/code/core/Mage/Model/Email/Template.php复制到其本地变体中,并在getProcessedTemplate()方法中添加了一行(〜第319行)
在返回结果之前,我通过帮助程序传递它,我的电子邮件现在很棒;但是,我宁愿让它工作而不必破解核心。我是否需要创建一个新事件和观察者才能执行此操作?有更友好的方法吗?
答案 0 :(得分:2)
不幸的是,在core/email_template
类的情况下,没有实用/有用的事件挂钩。此外,有两个类扩展了这个类,这意味着使用包含路径优先级是确保在所有情况下都使用定义的唯一方法。
您会注意到getProcessedTemplate()
方法调用_templateFilter
对象的filter()
方法。您可以通过配置实现core/email_template
的类重写,并在重写的_templateFilter
中设置_construct
以使用您自己的模板过滤器类,添加您需要的任何内容您对filter()
的定义。但是,没有什么可以阻止其他代码调用setTemplateFilter()
,因此您需要适应这种情况。请注意,Mage_Newsletter_Model_Queue会这样做。
不是你希望的答案,而是HTH。