gpt4 book ai didi

drupal - 如何覆盖另一个模块中存在的函数

转载 作者:行者123 更新时间:2023-12-02 07:21:28 24 4
gpt4 key购买 nike

我想重写comment_save函数。有没有办法覆盖它,以便我可以添加我的功能?

正在创建一个触发器,例如 http://drupal.org/node/375833最好的办法?这似乎不太可靠,因为它是事后发生的。

顺便说一句,这是在 D6 中。

最佳答案

这很棘手。首先,我建议您去看看是否可以使用 hook_comment ( http://api.drupal.org/api/drupal/developer--hooks--core.php/function/hook_comment/6 ) 来管理您需要的内容。这确实更符合需要。

如果您确实需要重写comment_save,那么通常一个不错的选择是看看它的名称。对于这种情况,你很幸运 - comment_save 只在一个地方被调用,即 comment.module 的第 1542 行,comment_form_submit 内部。

现在,comment_form_submit是一个表单提交函数 - 我们可以制作自己的自定义版本的comment_form_submit,而不是替换comment_save(为了论证,我们假设我们正在“custom_module”模块中工作) - 所以我要做的是创建一个名为 custom_module_comment_form_submit 的新函数,它调用我感兴趣的 comment_save 的变体,然后使用 hook_form_alter() ( http://api.drupal.org/api/drupal/developer--hooks--core.php/function/hook_form_alter/6 ) 设置 $form['#submit'] 来替换值“comment_form_submit”与“custom_module_comment_form_submit”。

这并不完美 - 如果您安装另一个使用 comment_save 的模块,那么您将需要找到类似的解决方法。如果在 Drupal 中发现错误或安全漏洞,并且在您正在处理的部分中修复了该错误或安全漏洞,那么您将无法在代码中修复该安全漏洞。但如果您绝对必须替换 comment_save,这几乎是唯一的方法。

关于drupal - 如何覆盖另一个模块中存在的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4329160/

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