Pregunta

Soy la creación de un grupo de diferentes idiomas MediaWiki es en una base de código. Hasta ahora la mayor parte de ella está trabajando, pero quiero utilizar una página principal que se ve diferente que el resto de las páginas. Para ello he añadido originalmente sólo algunas reglas CSS que sólo se aplica a la clase main_page:

body .page-Main_Page { <rules> }

El problema es que en otros idiomas de la página principal se llama de manera diferente (y la clase cambia en consecuencia), por lo que tampoco hay que añadir reglas CSS para todos los posibles títulos de la página principal (no va a suceder) o hacer una verificación dentro de la piel que se suma a una clase para el cuerpo si la página actual es la página principal.

Desafortunadamente, no hay manera de comprobar eso. La mayoría de las soluciones Googled se basan o bien en 'Página principal' o la creación de su propio título. Quiero la piel para detectar automáticamente el título.

La única solución que he pensado hasta ahora es tomar mediawiki's variable para la URL de la página principal y compararlo con el título de la página actual:

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

(la [ 'href'] comienza con / wiki /, por lo tanto el desplazamiento de 6)

y luego

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

(y algunos más clases por supuesto, pero se entiende la idea)

Pero esto me da otro problema. En español, la página se llama Página Principal. Los datos [ 'thisPage'] no tiene problemas con eso, sino que la [ 'href'] se guarda como / wiki / P% C3% A1gina_Principal

Así que ... ¿Puede alguien o me dice cómo 1. buscar la traducción de 'Página principal' en el idioma que se utiliza en la actualidad o 2. Convertir P% C3% A1gina_Principal en Página Principal (y similares para otros idiomas) OR 3. me muestran otra manera de comprobar si estoy en la página principal?

¿Fue útil?

Solución 2

Jaja Dios mío, fue tan simple.

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

Bueno, eso demuestra una vez más que teclear su problema a otra persona a veces le puede dar sólo la visión que necesitaba ..: P

Otros consejos

En realidad, hay una manera aún más sencilla:

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

Devuelve un valor lógico

Por desgracia, no funciona para mí con MediaWiki 1.16.4. Miré en él un poco y funciona (para mí) en la comprobación de

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

El problema es que

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

por lo que requiere un poco más de pensamiento para llegar a una solución más genérica.

(¿Podría ser que la actualización a un MW más adelante hará que el anterior código funcione sin embargo.)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top