MediaWiki Custom Skin: Проверьте, является ли текущая страница главной страницы

StackOverflow https://stackoverflow.com/questions/3592299

Вопрос

Я устанавливаю кучу разных языков Mediawiki's на одной кодовой базе. До сих пор большая часть этого работает, но я хочу использовать главную страницу, которая выглядит отличается от остальных страниц. Для этого я изначально только что добавил некоторые правила CSS, которые применяются только к классу Main_Page:

body .page-Main_Page { <rules> }

Проблема в том, что на других языках главная страница называется по-разному (и класс изменяется соответственно), поэтому я либо должен добавлять правила CSS для всех возможных главных названий (не произойдет), либо сделать проверку внутри кожи, которая добавляет Класс к телу, если текущая страница - главная страница.

К сожалению, нет способа проверить это. Большинство решений, которые я погрузившись, основаны на «главной странице» или устанавливая собственное название. Я хочу, чтобы кожа автоматически обнаружила название.

Единственное решение, которое я подумал до сих пор, - принять переменную MediaWiki для главного URL-адреса и сравнить его на текущее название страницы:

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

(['href'] начинается с / wiki /, следовательно, смещение 6)

и позже

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

(и некоторые больше классов, конечно, но вы поняли идею)

Но это дает мне еще одну проблему. На испанском языке страница называется Página Comment. Данные [«Methpage»] не имеют проблем с этим, но ['href'] сохраняется как / wiki / p% c3% a1gina_principal

Итак, кто-нибудь может ли кто-нибудь сказать мне, как 1. Нажать на перевод «Главная страница» на языке, который в настоящее время используется или 2. Конвертировать P% C3% A1Gina_Principal в Página Comment (и тому подобное для других языков) или 3 , Покажите мне еще один способ проверить, если я на главной странице?

Это было полезно?

Решение 2

Хаха, о боже, это было так просто.

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

Хорошо, что еще раз доказывает, что выводит вашу проблему кому-то еще, иногда может дать вам просто понимание, которое вам нужно ..: P

Другие советы

На самом деле есть еще проще

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

Возвращает логию

К сожалению, это не работает для меня с MediaWiki 1.16.4. Я немного посмотрел в это, и это работает (для меня) при проверке

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

Проблема в том, что

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

Таким образом, требуется еще немного мышления, чтобы добраться до более общего решения.

(Может быть, что обновление до более позднего MW сделает приведенную выше код работы.)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top