gpt4 book ai didi

drupal - 如何在 Drupal 中扩展贡献的模块?

转载 作者:行者123 更新时间:2023-12-04 13:21:27 27 4
gpt4 key购买 nike

如何在不修改现有模块的情况下扩展它?实际上它是一个贡献的模块,所以我不想破解它。但我想对其进行更改和添加某些功能。
我是 drupal 的新手,当我阅读有关它的教程时,我不断听到一件事 - 不要破解核心......我相信这同样适用于模块。

最佳答案

找到一个很好的 post 关于在 drupal 中扩展模块。基本部件:

  • 如果模块将代码用于您要更改的页面回调,请使用 hook_menu_alter() 更改页面回调。
  • 如果模块实现了您要更改的主题函数,请更改与 hook_theme_registry_alter() 关联的函数。或者,如果更改主题函数获取的变量就足够了,那么您可以为该主题函数实现预处理函数(例如,对于 theme_rdf_metadata() 的 hook_preprocess_rdf_metadata(),并更改主题函数将获取的变量。
  • 如果模块使用 db_select() 执行 SQL 查询,并为查询分配标签,则使用 hook_query_alter() 更改执行的查询。
  • 如果模块实现了一个你不希望它被执行的钩子(Hook),你可以实现 hook_module_implements_alter() 来避免它被执行。
  • 如果模块实现了一个 alter hook(例如 hook_page_alter()),并且您想要更改该 hook 更改的内容,请实现相同的 alter hook,确保它在从该模块实现的那个之后执行。

  • 如果您要更改的功能不是钩子(Hook),则:
  • 检查该函数是否使用从其他模块实现的钩子(Hook)。例如,node_save() 调用 hook_node_presave();如果我想更改节点的“已更改”属性,我不会破解 node_save(),而是实现 hook_node_presave() 来更改它。
  • 检查函数是否被钩子(Hook)引用/使用;在这种情况下,你可以为那个钩子(Hook)做一些事情,就像我之前描述的那样。

  • 如果到目前为止我所说的任何内容都不适用,那么最好创建一个自定义模块,并使用其他模块的代码来创建它。我也会尝试询问现有模块的功能请求,希望该功能能够实现。
    入侵第三方模块绝不是一个好主意,尤其是因为该模块不再可能自动更新模块(通过更新管理器或 Drush)。

    关于drupal - 如何在 Drupal 中扩展贡献的模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1633058/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com