Пользовательский скин MediaWiki: проверьте, является ли текущая страница главной страницей - PullRequest
2 голосов
/ 29 августа 2010

Я настраиваю кучу разных языковых медиа-вики на одной кодовой базе.Пока что большая часть этого работает, но я хочу использовать главную страницу, которая выглядит иначе, чем остальные страницы.Для этого я просто добавил несколько правил 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 Principal.У данных ['thispage'] с этим проблем нет, но ['href'] сохраняется как / wiki / P% C3% A1gina_Principal

Так что ... кто-нибудь может сказать мне, как 1.ищите перевод 'Main Page' на языке, который используется в настоящее время ИЛИ 2. конвертируйте P% C3% A1gina_Principal в Página Principal (и т.п. для других языков) ИЛИ 3. покажите мне другой способ проверить, нахожусь ли я наглавная страница?

Ответы [ 3 ]

5 голосов
/ 12 января 2013

Существует еще более простой способ:

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

Возвращает логическое значение

4 голосов
/ 29 августа 2010

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

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

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

0 голосов
/ 31 марта 2012

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

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

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

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

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

(Возможно, при обновлении до более поздней версии MW приведенный выше код будет работать.)

...