2017-08-30 4 views
0

Dans MediaWiki, il est possible d'accéder au nombre total de pages qui ont été créées avec l'un des mots magiques, {{NUMBEROFPAGES}}. Y at-il un moyen d'accéder au nombre total de pages désirées, pages qui sont redlinked? Il y a Special: WantedPages, et si je vais à la dernière page des résultats, il y a le nombre total. Est-ce qu'il trouve cela seulement sur demande, ou est-ce que cette variable est accessible de la même manière que {{NUMBEROFPAGES}}?MediaWiki - Comment puis-je obtenir le nombre total de pages recherchées?

+1

Ce n'est pas le cas. C'est [pas difficile] (https://www.mediawiki.org/wiki/Manual:Magic_words) d'en ajouter un si votre wiki est petit et que vous n'êtes pas trop concerné par les performances. – Tgr

+0

Malade. Pourriez-vous ajouter ceci comme réponse? –

Répondre

1

Ce n'est pas inclus dans le default magic words et je ne suis pas au courant d'une extension qui le fournirait non plus. Si vous ne vous inquiétez pas trop sur la performance, il est assez facile à faire:

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 
    ); 
}; 

Notez que ceci est la version extrême de coupe d'angle. Si vous écrivez une extension et que vous voulez le faire correctement, voyez the manual.

+0

Ceci est certainement utile, même si je ne suis pas sûr de savoir où ça va? –

+0

'LocalSettings.php' serait l'emplacement conventionnel (dans ce cas, vous n'avez pas besoin de la ligne' global ... 'dans la portée globale). – Tgr

+0

J'ai ajouté a); pour fermer selectField (et il analyse correctement maintenant.) Mais il n'imprime rien quand j'écris {{NUMBEROFWANTEDPAGES}}. –