我想在我的wiki上运行MW 1.24的特定页面添加跟踪类别。我知道我可以使用Parser :: addTrackingCategory()或ParserOptions :: addCategory()这样做,但我能找到的唯一使用它的例子来自解析器函数(例如扩展名:Maps中所示) ,我不使用。
我使用的扩展名是ApprovedRevs - 派生的;基本上它的作用是将一个页面分配给一个项目,并允许一个简单的批准。这都是在实际页面内容(附加数据库表)之外完成的,因此没有解析器函数/标记。
我尝试过使用相当多的钩子:ParserAfterTidy,ContentGetParserOutput,OutputPageParserOutput和其他几个。虽然第一个至少在页面上显示类别,但页面实际上并未包含在跟踪类别中(显示为空)。
我的代码(缩写)是这样的:
$wgTrackingCategories[] = 'approvedrevs-tracking-category';
$wgHooks['ParserAfterTidy'][] = 'onParserAfterTidy';
public static function onParserAfterTidy( Parser&$parser, &$text ) {
$title = $parser->getTitle();
if( ApprovedRevs:isPageAssigned( $title ) {
$parser->addTrackingCategory( 'approvedrevs-tracking-category' );
}
}
我为此跟踪类别添加了相应的消息;此时,我可以看到页面上的类别,我可以看到Special:TrackingCategories
列出的跟踪类别。
我现在确实发现从MW 1.25开始,还有一个名为ContentAlterParserOutput的额外钩子,例如在Extension:CommonsMetadata中使用,这似乎允许这一点 - 但我' m仍然限于MediaWiki 1.24 ......任何想法?
答案 0 :(得分:1)
The commit添加ContentAlterParserOutput解释了它与其他钩子的区别,并概述了一些解决方法。 (提交添加钩子或设置通常从手册页链接,通常值得点击。)
所以ParserAfterTidy应该可以工作,虽然你会遇到各种不属于页面内容的东西而遇到麻烦。尝试在页面上进行空编辑,看看是否更新了类别。
从类似的挂钩(ParserBeforeTidy)添加跟踪类别的扩展示例为Cite。