我想将跟踪类别添加到我的 wiki 上的特定页面,运行 MW 1.24。我知道我可以使用 Parser::addTrackingCategory() 或 ParserOptions::addCategory() 来做到这一点,但我能找到的唯一使用它们的例子是在解析器函数中(如 extension: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中使用,这似乎完全允许 - 但我仍然仅限于 MediaWiki 1.24 ......有什么想法吗?