Domanda

Sono la creazione di un gruppo di lingua diversa MediaWiki è su una base di codice. Finora la maggior parte di esso sta funzionando, ma voglio utilizzare una pagina principale che un aspetto diverso rispetto al resto delle pagine. Per fare questo ho originariamente solo aggiunto alcune regole CSS che hanno applicato solo per la classe main_page:

body .page-Main_Page { <rules> }

Il problema è che in altre lingue nella pagina principale si chiama in modo diverso (e la classe cambia di conseguenza), così ho né devo aggiungere regole CSS per tutti i possibili titoli di pagina principale (non succederà mai) oppure fare un controllo all'interno della pelle che aggiunge una classe per il corpo se la pagina corrente è la pagina principale.

Purtroppo, non c'è modo di verificare che. La maggior parte delle soluzioni di Googled si basano su entrambi i 'Pagina principale' o impostare il proprio titolo. Voglio la pelle di rilevare il titolo automaticamente.

L'unica soluzione Ive pensato finora è prendere mediawiki's variabile per l'URL della pagina principale e confrontarlo con il titolo della pagina corrente:

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

(la [ 'href'] inizia con / wiki /, quindi l'offset di 6)

e poi

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

(e alcuni più classi, naturalmente, ma si ottiene l'idea)

Ma questo mi dà un altro problema. In spagnolo, la pagina si chiama Página Principal. I dati [ 'thisPage'] non ha problemi con questo, ma il [ 'href'] viene salvato come / wiki / P% C3% A1gina_Principal

Quindi ... Qualcuno può o mi dica come 1. occhiata la traduzione di 'Pagina principale' nella lingua che è attualmente usato o 2. convertito P% C3% A1gina_Principal in Página Principal (e simili per le altre lingue) OR 3. Mi mostrano un altro modo per controllare se sono sulla pagina principale?

È stato utile?

Soluzione 2

Haha omg, era così semplice.

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

Bene che dimostra ancora una volta che digitando il problema a qualcun altro a volte può dare solo l'intuizione avevi bisogno ..: P

Altri suggerimenti

V'è in realtà un modo ancora più semplice:

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

Restituisce un valore booleano

Purtroppo non funziona per me con MediaWiki 1.16.4. Ho guardato dentro un po 'e funziona (per me) al momento del check in

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

Il problema è che

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

in modo che richiede un po 'di riflessione per arrivare a una soluzione più generica.

(potrebbe essere che l'aggiornamento a un MW tardi farà il lavoro di codice di cui sopra però.)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top