自动添加文本到MediaWiki上的文章



我有一个本地的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

最新更新