Question

Je suis mise en place d'un groupe de langues différentes mediawiki est sur une base de code. Jusqu'à présent, la plus grande partie travaille, mais je veux utiliser une page principale qui est différent que le reste des pages. Pour ce faire, je viens d'ajouter à l'origine des règles CSS qui n'appliqués à la classe main_page:

body .page-Main_Page { <rules> }

Le problème est que dans d'autres langues, la page principale est appelée différemment (et la classe change en conséquence), je dois donc soit d'ajouter des règles CSS pour tous les titres de page principale possibles (ne va pas arriver) ou faire une vérification dans la peau qui ajoute une classe au corps si la page en cours est la page principale.

Malheureusement, il n'y a aucun moyen de vérifier. La plupart des solutions que j'ai googlé sont basées soit sur « Page principale » ou définir votre propre titre. Je veux la peau pour détecter le titre automatiquement.

La seule solution est de pensée Ive jusqu'à prendre mediawiki's variable pour la principale URL de la page et le comparer au titre de la page courante:

$mainurl = $this->data['nav_urls']['mainpage']['href'];
$ismain = $this->data['thispage'] == substr($mainurl,'6');

(la [ 'href'] commence par / wiki /, d'où le décalage de 6)

et plus tard

<body class="<?php echo ($ismain ? 'mainpage' : ''); ?>">    

(et quelques autres classes de cours, mais vous voyez l'idée)

Mais cela me donne un autre problème. En espagnol, la page est appelée Página Principal. Les données [ 'thisPage'] n'a aucun problème avec cela, mais le [ 'href'] est enregistré comme / wiki / P% C3% A1gina_Principal

Alors ... Quelqu'un peut-il soit me dire comment 1. rechercher la traduction pour « Page principale » dans la langue qui est actuellement utilisée ou 2. convertir P% C3% A1gina_Principal en Página Principal (et comme pour d'autres langues) OU 3. me montrer une autre façon de vérifier si je suis sur la page principale?

Était-ce utile?

La solution 2

Haha omg, il était si simple.

$this->data['skin']->mTitle->mUrlform == $mainurl;

Eh bien, ce qui prouve encore une fois en tapant votre problème à quelqu'un d'autre peut parfois vous donner les informations dont vous aviez besoin ..: P

Autres conseils

Il est en fait une manière encore plus simple:

if ($this->getSkin()->getTitle()->isMainPage())

Renvoie une valeur booléenne

Malheureusement, il ne fonctionne pas pour moi avec MediaWiki 1.16.4. Je regardais dans un peu et il fonctionne (pour moi) lors de la vérification sur

$this->data['skin']->mTitle->mUrlform == "Main_Page"

Le problème est que

$this->data['nav_urls']['mainpage']['href'] == "/en/Main_Page"

donc il faut un peu plus penser à se rendre à une solution plus générique.

(peut-être que la mise à niveau à un MW plus tard fera le travail de code ci-dessus cependant.)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top