我有一个本地的MediaWiki运行,我正在开发一个新的扩展。我想实现一个新功能,但我需要能够自动向文章添加文本。
更详细地说,每当有人创建或编辑一篇文章时,我想在底部注入额外的文本,例如,[[Category:TBD]]
。
我发现两个Hooks似乎可以完成这项工作:
- PageSaveComplete
- MultiContentSave
我两个都试过了,但是都不行。
MultiContentSave
public static function onMultiContentSave( RenderedRevision $renderedRevision,
UserIdentity $user,
CommentStoreComment $summary,
$flags)
{
// get page content
$content = $renderedRevision->getRevision()->getSlot('main')->getContent();
// update content
$data = $content->getText();
$data .= "[[Category:TBD]]";
$content1 = new WikitextContent($data);
return true;
PageSaveComplete
public static function onPageSaveComplete( WikiPage $wikiPage, UserIdentity $user ) {
$content = $wikiPage->getContent();
$data = $content->getText();
$data .= "[[Category:TBD]]";
$data = ContentHandler::makeContent($data, $wikiPage->getTitle());
echo("Saving...");
$summary = CommentStoreComment::newUnsavedComment( 'test' );
$updater = $wikiPage->newPageUpdater($user);
$updater->setContent(SlotRecord::MAIN, $content);
$updater->saveRevision($summary, 0);
return true;
}
在第一种方法中什么也没有发生,而在第二种方法中,它一直重复"Saving…"直到内存耗尽。
任何帮助将不胜感激!
如何关闭循环:在编辑之前,检查您的类别是否已经通过爬行页面的内容添加。
只是为了确保至少有一个类别存在吗?为什么不直接使用">未分类页面"由mediawiki引擎给出?
来自维基百科的例子(fr,但同样可以在任何语言中使用):https://fr.wikipedia.org/wiki/Sp samcicial: pages_non_catsamgorissames