我有需要在simplenews模块中修改simplenews_build_newsletter_mail()函数但是,我们不修改直接贡献的模块函数。
有人能给我修改simplenews_build_newsletter_mail()函数的方法吗?
答案 0 :(得分:1)
drupal中移动的大多数数据都可以通过“钩子”来改变
要从simplenews_build_newsletter_mail(&$message, SimplenewsSourceInterface $source)
调用要更改的函数simplenews_mail($key, &$message, $params)
,这是hook_mail
的简单实现
幸运的是,hook_mail
的所有输出都可以通过hook_mail_alter()
更改。
您需要做的是创建自己的模块,然后在新的自定义模块中实现hook_mail_alter()
。找到您的目标电子邮件,进行更改。
你将需要使用mail $ id来识别你想要改变的邮件,id将是{$ module} _ {$ key},其中模块是drupal模块,在你的情况下生成这封电子邮件(simplenews)
在此处查找更多信息https://api.drupal.org/api/drupal/modules%21system%21system.api.php/function/hook_mail_alter/7
/**
* Implements hook_mail_alter().
*/
function mymodule_mail_alter(&$message) {
switch ($message['id']) {
case 'simplenews_node':
case 'simplenews_test':
// Do your magic.
break;
}
}