2010-12-01 64 views

回答

5

这是棘手。首先,我建议你去看看你是否可以通过使用hook_comment来管理你需要的东西(http://api.drupal.org/api/drupal/developer--hooks--core.php/function/hook_comment/6)。这真的是更多的这是需要的。

如果你真的需要重写comment_save,那么通常一个好的选择是环顾一下什么东西叫它。对于这种情况,你很幸运 - comment_save只能在comment_form_submit内部的comment.module的第1542行的一个地方被调用。

现在,comment_form_submit是一个表单提交函数 - 我们可以替代替换comment_save来创建自己的自定义版本的comment_form_submit(为了参数的缘故,我们假设我们正在使用'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)设置$形式[“#提交”]更换值'comment_form_submit'和'custom_module_comment_form_submit'。

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

2

你不能“越权”的comment_save功能,但你可以实现一个自定义模块中的hook_comment。

参见主题drupal.org's文档。

所讨论的两个$老年退休金计划,这将是得心应手,为您将是:

  • “插入”:注释被插入。
  • “更新”:评论正在更新。

希望这有助于

+0

同意。当需要'重写'核心或其他模块行为时,我会坚持使用hook_comment和hooks。 – 2010-12-01 22:45:18

1

虽然肯定不理想,有时我创建自己的自定义模块与修改后的功能,然后注释掉原来的(并添加足够的意见告诉别人为什么这样做)。这样,如果你忘了并且将具有原始功能的模块升级到道路上时,它会抛出错误,说明已声明该功能,提醒您重新评估或至少重新评论它。挂钩当然是最好的做法,但在这种情况下,至少会给你提供比在现有模块中实际编辑功能更好的东西。在少数情况下,我发现有必要让某些模块在一起很好地玩。