MediaWiki/Внешний вид/VectorLight

Материал из СисадминВики (SysadminWiki.ru)
Перейти к: навигация, поиск

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";

Изменения общего характера

Изменения общего характера делаются аналогично изменениям родительской темы Вектор.

Облегчение темы

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

  1. Вносить все изменения в тему, используемую на тестовом сайте. Лучше всего полном клоне работающего сайта, но можно и на пустом, главное не забыть, что версия движка должна быть та же, что и у основного сайта.
  2. Изменения вносить по одному, проверяя каждый раз полученный эффект в Интернет-обозревателе. В зависимости от вносимых изменений проверку нужно делать либо в режиме участника (т.е. залогинившись) либо в режиме читателя.
  3. В местах изменения и удаления оставлять комментарии или хотя бы метки. Это поможет при дальнейшем обновлении темы.


Убираем из шапки поиск, инструменты участника и действия

В файле 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': 
	...	

Полезные ссылки