如何在drupal中修改贡献模块的功能?

时间:2014-10-14 07:37:41

标签: drupal module

我有需要在simplenews模块中修改simplenews_build_newsletter_mail()函数但是,我们不修改直接贡献的模块函数。

有人能给我修改simplenews_build_newsletter_mail()函数的方法吗?

1 个答案:

答案 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;
      }
    }