2

我想将跟踪类别添加到我的 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 ......有什么想法吗?

4

1 回答 1

1

添加 ContentAlterParserOutput的提交解释了它与其他钩子的不同之处,并概述了一些解决方法。(添加钩子或设置的提交通常从手册页链接,通常值得点击。)

所以 ParserAfterTidy 应该可以工作,尽管在不属于页面内容的各种事物上调用它会遇到麻烦。尝试在页面上进行空编辑并查看类别是否已更新。

从类似的钩子 (ParserBeforeTidy) 添加跟踪类别的扩展示例是Cite

于 2015-02-20T08:16:29.443 回答