2017-10-06 6 views
0

Je cours un petit wiki et nos utilisateurs aimeraient une interface qu'ils trouvent moins déroutante. la plainte est qu'une page intitulée quelque chose comme «Big_news» s'affiche sous forme de lien si le lien est «Big News» ou «big news» ou une autre permutation majuscule/minuscule, et ils aimeraient que ceux-ci apparaissent comme de couleur normale liens si la page existe. Lorsqu'un utilisateur clique sur le lien, la page appropriée s'affiche correctement, mais il serait préférable de voir que la page existe déjà.mediawiki - rendre l'évaluation des liens insensible à la casse

J'ai essayé d'implémenter des solutions telles que celles présentées here, here et here, mais elles ne fonctionnent pas - les liens s'affichent toujours sous la forme de liens rouges sur la page. [En effet, je pense que certains des articles sont périmés; mediawiki 1.27 ne semble pas avoir les tables mentionnées en eux.]

des idées comment je pourrais y arriver?

Répondre

0

Vous pouvez accrocher HtmlPageLinkRendererBegin et utiliser la cible de lien pour exécuter une requête de base de données pour trouver des correspondances insensibles à la casse pour le nom de la page (sur le titre de la page, et cela uniquement pour les liens internes) remplacez ensuite la cible s'il y a une correspondance.

0

merci pour le conseil, @Sam Wilson. cela ressemble à une fonction intéressante, mais à moins que je manque ma conjecture, je devrais interroger la base de données pour chaque lien simple dans une page - correct? si c'est le cas, je pense que la performance en souffrirait. de toute façon, ce crochet ne semblait pas fonctionner pour moi [surtout parce que mon manque de familiarité avec mediawiki m'a laissé me gratter la tête ...]. la solution que j'ai trouvée est la suivante:

1- ajouter la variable $wgLinksIgnoreCase à votre fichier LocalSettings.php. définissez cette valeur sur true si vous souhaitez que les affichages de liens soient mappés sans tenir compte de la casse.

2- modifier le fichier includes/parser/LinkHolderArray.php comme suit [diff précise pour la version 1.29 wikimedia] -

283a284 
>    global $wgLinksIgnoreCase; 
370a373,376 
>    if (!empty($wgLinksIgnoreCase)) { 
>     $mapper = array_combine(array_keys($colours), array_keys($colours)); 
>     $mapper = array_change_key_case($mapper); 
>    } 
373a380,381 
>    if (!empty($wgLinksIgnoreCase) && isset($mapper[strtolower($pdbk)])) 
>     $pdbk = $mapper[strtolower($pdbk)]; 

comme je le dis, je ne suis pas très familier avec le logiciel, donc si quelqu'un qui est familier avec elle trouve une solution plus élégante, n'hésitez pas à entrer.

+0

LinkBatch est utilisé pour effectuer des recherches par lots sur les bases de données. Mais alors je m'attendrais à presque tout (sauf peut-être l'API) à compter sur la normalisation des titres dans Title, alors peut-être que vous pouvez vous en sortir en changeant seulement cela. – Tgr

0

Vous pouvez regarder comment $wgCapitalLinks est utilisé. Il est probable que les titres en minuscules auront besoin d'un boîtier spécial aux mêmes endroits où le code doit être ramifié en fonction de ce paramètre. LinkCache est utilisé pour éviter les recherches de DB en double;