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

Posted

技术标签:

【中文标题】如何修改drupal中贡献模块的功能?【英文标题】:how to modify function of contributed module in drupal? 【发布时间】:2014-12-08 21:57:52 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

drupal 中移动的大部分数据都可以通过“钩子”进行更改

您要更改的函数 simplenews_build_newsletter_mail(&$message, SimplenewsSourceInterface $source) 正在从 simplenews_mail($key, &$message, $params) 调用,这是 hook_mail 的 simplenews 实现

幸运的是,hook_mail 的所有输出都可以通过hook_mail_alter() 进行更改。

您需要做的是创建自己的模块,然后在新的自定义模块中实现hook_mail_alter()。找到您的目标电子邮件,更改它们。

您需要使用邮件 $id 确定要更改的邮件,id 将是 $module_$key 其中模块是在您的情况下生成此电子邮件 (simplenews) 的 drupal 模块.

在此处查找更多信息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;
      
    

【讨论】:

以上是关于如何修改drupal中贡献模块的功能?的主要内容,如果未能解决你的问题,请参考以下文章

如何 - 构建自定义 drupal 8 模块表单

当我将Drupal 7更新为Drupal 8时,我的模块会发生什么?

教你如何成为开源项目SeaTunnel的贡献者

教你如何成为开源项目SeaTunnel的贡献者

sprint2的总结及团队贡献分

转如何在github上fork一个项目来贡献代码以及同步原作者的修改 -- 不错