2010-08-28 3 views
1

Я создаю кучу разных языков mediawiki на одной кодовой базе. Пока что большая часть из них работает, но я хочу использовать главную страницу, которая выглядит иначе, чем остальные страницы. Для этого я первоначально только добавил некоторые правила CSS, которые применяются только к классу main_page:MediaWiki пользовательский скин: проверьте, является ли текущая страница главной страницей.

body .page-Main_Page { <rules> } 

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

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

Единственное решение I've думал до сих пор принимает mediawiki's переменные для главной страницы URL и сравнить его с текущим названием страницы:

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

(кнопка [ «HREF»] начинается с/вики /, следовательно, смещение 6)

, а затем

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

(и еще несколько классов, конечно, но вы получите идею)

Но это дает мне еще одну проблему. На испанском языке эта страница называется Página Principal. У данных ['thispage'] нет проблем с этим, но ['href'] сохраняется как/wiki/P% C3% A1gina_Principal

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

ответ

4

Haha omg, все было так просто.

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

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

+0

Дa, я Я был там. Часто после того, как я отправляю вопрос, ответ просто «появляется».Отлично, вы также отправили ответ, спасибо. (Не забудьте принять его.) – Wikis

+0

Напоминание: D –

0

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

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

Проблема заключается в том, что

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

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

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

+0

Возможно, это связано с тем, как вы настраиваете свою вики, я никогда не сталкивался с установкой mediawiki, которая использует этот язык в качестве подпапки перед страницей uri , Я думаю, что он должен делать больше с этим, чем с реальной версией, которую вы используете. –

4

Существует на самом деле еще более простой способ:

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

Возвращает булево

+0

Отлично работает, спасибо! – Heihachi

+0

Это должен быть принятый ответ, так как это будет работать независимо от структур URL. Кроме того, для этого используется 'isMainPage()'. – leo

Смежные вопросы