0

目标:每次发送事务性电子邮件时,在发送前通过帮助程序类传递模板文本字符串。

我基本上已经按照我的意愿进行了工作。除了一件有点烦人的事情。我已将 /app/code/core/Mage/Model/Email/Template.php 复制到它的本地变体中,并在 getProcessedTemplate() 方法中添加了一行(~第 319 行)

在返回结果之前,我将它传递给助手,我的电子邮件现在很棒;但是,我宁愿让它工作而不必破坏核心。我需要创建一个新的事件和观察者来做到这一点吗?有没有更友好的方法?

4

1 回答 1

2

不幸的是,在课堂上没有实用/有用的事件挂钩core/email_template。此外,有两个类扩展了此类,这意味着使用包含路径优先级是确保在所有情况下都使用您的定义的唯一方法。

您会注意到该getProcessedTemplate()方法调用了_templateFilter对象的filter()方法。您可以core/email_template通过配置实现类重写,_templateFilter 并将覆盖设置_construct为使用您自己的模板过滤器类,在filter(). 但是,没有什么可以阻止其他代码调用setTemplateFilter(),因此您需要适应这种情况。请注意,Mage_Newsletter_Model_Queue 执行此操作。

不是您希望的答案,而是 HTH。

于 2012-06-25T11:00:16.857 回答