MediaWiki/Внешний вид/VectorLight
VectorLight - это облегчённый вариант темы Вектор (Vector). В этой статье мы рассмотрим как сделать собственную тему оформления путём изменения существующей.
Облегчённый вариант может пригодится, например, для незарегистрированных пользователей, если мы решили предоставлять разный интерфейс для редакторов и обычных посетителей. Т.к. простые читатели не нуждаются в некоторых элементах оформления, то их можно просто убрать, тем ускорив загрузку страниц и уменьшив нагрузку на сервер. О том как это настроить смотрите на странице MediaWiki/Внешний вид под заголовком Разные темы для участников и посетителей.
Создание копии
1) Заходим в каталог skins и копируем каталог Vector в VectorLight.
2) Переименовываем файлы заменяя Vector на VectorLight:
- SkinVector.php
- vector.js
- Vector.php
- VectorTemplate.php
3) В коде переименованных PHP скриптов заменяем Vector на VectorLight соблюдая заглавные и строчные буквы.
4) Обновляем файлы переводов в каталоге i18n, заменив в именах переменных vector на vectorlight. Русский перевод находится в файле ru.json.
Подключение
Загружаем и выбираем тему стандартным способом:
wfLoadSkin( 'VectorLight' ); $wgDefaultSkin = "vectorlight";
Изменения общего характера
Изменения общего характера делаются аналогично изменениям родительской темы Вектор.
Облегчение темы
Что именно убирать из темы, что изменять, а что оставить как есть - вопрос индивидуальный для каждого сайта. Однозначно можно рекомендовать лишь соблюдение следующих мер предосторожности:
- Вносить все изменения в тему, используемую на тестовом сайте. Лучше всего полном клоне работающего сайта, но можно и на пустом, главное не забыть, что версия движка должна быть та же, что и у основного сайта.
- Изменения вносить по одному, проверяя каждый раз полученный эффект в Интернет-обозревателе. В зависимости от вносимых изменений проверку нужно делать либо в режиме участника (т.е. залогинившись) либо в режиме читателя.
- В местах изменения и удаления оставлять комментарии или хотя бы метки. Это поможет при дальнейшем обновлении темы.
Убираем из шапки поиск, инструменты участника и действия
В файле VectorTemplate.php находим строки
$xmlID = ''; foreach ( $nav as $section => $links ) {
и удаляем всё до следующих строк (оставляя эти):
$this->data['pageLanguage'] = $this->getSkin()->getTitle()->getPageViewLanguage()->getHtmlCode();
В описании строки навигации оставляем лишь следующий код:
<div id="mw-navigation"> <h2><?php $this->msg( 'navigation-heading' ) ?></h2> <div id="mw-head"> <!-- Удаляем поиск, инструменты участника и действия --> </div> <div id="mw-panel"> <div id="p-logo" role="banner"><a class="mw-wiki-logo" href="<?php echo htmlspecialchars( $this->data['nav_urls']['mainpage']['href'] ) ?>" <?php echo Xml::expandAttributes( Linker::tooltipAndAccesskeyAttribs( 'p-logo' ) ) ?>></a></div> <?php $this->renderNavigation( 'SEARCH' ); /* Помещаем строку поиска над меню */ ?> <?php $this->renderPortals( $this->data['sidebar'] ); ?> <?php $this->renderNavigation( 'PERSONAL' ); /* Ссылку "Войти" размещаем под меню */ ?> </div> </div>
Таким образом мы убрали инструменты (Читать, История и т.д.) и перенесли строку поиска над меню (под логотип), а ссылку "Войти" под меню.
Убираем некоторые пункты основного меню
Рассмотрим на примере раздела меню "Инструменты". В функции renderPortals() находим switch переключатель TOOLBOX. Его код выглядит следующим образом:
case 'TOOLBOX': $this->renderPortal( 'tb', $this->getToolbox(), 'toolbox', 'SkinTemplateToolboxEnd' ); break;
Чтобы удалить пункты "Спецстраницы" и "Информация о странице" мы определим переменную $modifiedToolbox
, куда сохраним все пункты меню в блоке "Инструменты", а затем удалим из него ненужные. Для этого приведём вышеуказанный код к следующему виду:
case 'TOOLBOX': //Изменяем набор инструментов, удаляя ссылки на Спецстраницы и Информация о странице $modifiedToolbox = $this->getToolbox(); unset( $modifiedToolbox[ 'specialpages' ] ); unset( $modifiedToolbox[ 'pageinfo-toolboxlink' ] ); $this->renderPortal( 'tb', $modifiedToolbox, 'toolbox', 'SkinTemplateToolboxEnd' ); break;
Чтобы совсем убрать инструменты из меню закомментируем всё содержимое раздела TOOLBOX, кроме оператора break
:
case 'TOOLBOX': /* ... */ break; case 'LANGUAGES': ...