1

我是 Mediawiki 的新手。

我有链接到文章内容的某些元素的数据库记录。数据库中的数据完全依赖于文章的内容,并且必须在相应元素发生更改时进行更新。一些mediawiki 钩子提供了部分所需功能,但我不确定它是否是正确的解决方案,因为我必须为同一任务使用几个不同的钩子,而且在这样的琐碎情况下看起来太复杂了。

我怎样才能以最合适的方式做到这一点?

我正在使用 page_id 链接到数据库中的文章。在这种情况下是否正确?

对于必须更新数据库的所有情况,我必须使用哪些 mediawiki 挂钩?目前我想使用这个:

  • 文章插入完成
  • 文章删除完成
  • 文章修订未删除
  • 页面内容保存完成
  • 文章回滚完成
  • 文章合并完成

或者我怎样才能捕捉到任何最近的变化?

4

1 回答 1

0

你是对的,没有一个钩子可以为页面可能发生的任何更改运行代码。这有两个相关的原因:

  1. 有无数条路径可能会改变页面:并非所有路径都在核心中,有些是由扩展提供的;更改可能来自另一个页面(例如模板);甚至是另一个 wiki(例如文件存储库,甚至是你吓人的模板);
  2. 以相同的方式处理所有情况并不是一个好主意,因为可以安全地忽略某些更新,如果批量完成其他更新可能会杀死您的 wiki 并且应该在作业队列中延迟,其他更新必须立即运行。

所以,是的,你必须找出所有的钩子(你的列表已经很好,对于核心;需要随着你安装的每个扩展而修改)。如果您需要的更新类型始终相同,您可以相同的函数附加到所有挂钩,这样重复就最小化了。

于 2014-12-09T20:00:23.737 回答