MediaWiki - 如何获得通缉页面的总数?

时间:2017-08-30 19:59:17

标签: mediawiki wiki

在MediaWiki中,可以访问使用其中一个魔术词{{NUMBEROFPAGES}}创建的页面总数。有没有办法访问想要的页面的总数,红色链接的页面?有Special:WantedPages,如果我转到结果的最后一页,它有总数。它是仅在请求时发现,还是以与{{NUMBEROFPAGES}}类似的方式访问该变量?

1 个答案:

答案 0 :(得分:1)

这不包括在default magic words中,我也不知道会提供它的任何扩展。如果你不太关心性能,那么很容易做到:

global $wgHooks;
$wgHooks['LanguageGetMagic'][] = function ( &$magicWords, $langCode ) {
     // 1 is for case-sensitive
    $magicWords['wantedpages'] = [ 1, 'NUMBEROFWANTEDPAGES' ];
};
$wgHooks['MagicWordwgVariableIDs'][] = function ( &$customVariableIds ) {
    $customVariableIds[] = 'wantedpages';
};
$wgHooks['ParserGetVariableValueSwitch'][] = function (
    &$parser, &$cache, &$magicWordId, &$ret
) {
    $db = wfGetDB( DB_REPLICA );
    $ret = $db->selectRowCount(
        [ 'pagelinks', 'page' ], // tables
        'count(*)', //value
        [ 'page_id' => null ], // conditions
        __METHOD__,
        [ 'GROUP BY' => [ 'pl_namespace', 'pl_title' ] ],
        [ 'page' => [ 'LEFT JOIN', 'pl_namespace = page_namespace AND pl_title = page_title' ] ] // join conditions
    );
};

请注意,这是极端切角机版本。如果您正在撰写扩展程序并希望正确执行此操作,请参阅the manual