MediaWiki/Внешний вид/Vector
Для темы Вектор (Vector) существует собственная страница CSS стилей MediaWiki:Vector.css изначально пустая.
Добавление произвольного HTML кода
Вплоть до MediaWiki 1.35 пока ещё не существует лёгкого пути адаптации тем оформления. За исключением бокового меню и системных сообщений все изменения необходим вносить прямо в исходный код темы. В результате все внесённые изменения (кроме упомянутых двух типов) теряются с каждым обновлением. Пока единственным решением немного облегчающим ситуацию является хранение желаемых изменений в отдельных HTML файлах. Тогда в коде темы необходимо только подключить эти файлы в VectorTemplate.php (skins/Vector/includes/).
Ниже приведены некоторые примеры добавления произвольного HTML кода в различные места темы. Код может отличаться в различных версиях Медиавики.
MediaWiki 1.41
В MediaWiki 1.41 тема Вектор имеет 2 режима: vector и vector-2022.
Убрать анимацию загрузки сайта в правом верхнем углу. На MediaWiki:Common.css добавить
/* Убираем индикатор анализатора */ .mw-indicator { display: none; }
vector: Код до и после бокового меню. В skins/Vector/includes/templates/LegacySidebar.mustache
{{! See @typedef SidebarData }} <div id="mw-panel" class="vector-legacy-sidebar"> <div id="p-logo" role="banner"> <a class="mw-wiki-logo" href="{{link-mainpage}}" title="{{msg-tooltip-p-logo}}"></a> </div> <hr> <p>Hello!</p> {{#data-portlets-first}}{{>LegacyMenu}}{{/data-portlets-first}} {{#array-portlets-rest}}{{>LegacyMenu}}{{/array-portlets-rest}} {{#data-portlets.data-languages}}{{>LegacyMenu}}{{/data-portlets.data-languages}} <hr> <p>Buy</p> </div>
vector: Место для картинки. skins/Vector/includes/templates/skin-legacy.mustache
<div id="content" class="mw-body" role="main"> <a id="top"></a> <div id="siteNotice">{{{html-site-notice}}} <span style="float:right;">ABCDEFGH</span> </div> {{>Indicators}}
vector-2022: Иконка после заголовка. В skins/Vector/includes/templates/PageToolbar.mustache
<div id="right-navigation" class="vector-collapsible"> <nav aria-label="{{msg-views}}"> {{#data-portlets}}{{#data-views}}{{>Tabs}} <img src="/w/images/picture_30x35.jpg"/> {{/data-views}}{{/data-portlets}} </nav>
vector-2022: Поисковый ввод перед футером. В /skins/Vector/includes/templates/Footer.mustache
<footer id="footer" class="mw-footer" role="contentinfo" {{{html-user-language-attributes}}}> <div><input type="text"></div> {{#data-info}}{{>Footer__row}}{{/data-info}} {{#data-places}}{{>Footer__row}}{{/data-places}} {{#data-icons}}{{>Footer__row}}{{/data-icons}} </footer>
MediaWiki 1.35
Ссылка логотипа
Чтобы изменить ссылку логотипа поменяем возвращаемый функцией buildSidebar() массив:
return [ 'has-logo' => $this->isLegacy, 'html-logo-attributes' => Xml::expandAttributes( Linker::tooltipAndAccesskeyAttribs( 'p-logo' ) + [ 'class' => 'mw-wiki-logo', 'href' => Skin::makeMainPageUrl(), ] ), 'array-portals-rest' => array_slice( $props, 1 ), 'data-portals-first' => $firstPortal, 'data-portals-languages' => $languages, ];
Меняем строку 6 на следующую:
'href' => 'https://our.domain.org/',
Боковое меню. Добавление сторонней поисковой службы
Сохраняем код поисковой формы в 'custom-search.htm' (skins/Vector/includes/) и меняем в функции buildSidebar() строки:
case 'SEARCH': break;
на:
case 'SEARCH': /* custom search engines begins */ $html = file_get_contents('custom-search.htm', FILE_USE_INCLUDE_PATH); $portal['html-items'] .= $html; $props[] = $portal; /* custom search engines ends */ break;
Поисковое поле появится в месте, указанном на странице MediaWiki:Sidebar:
* SEARCH
Подвал. Произвольная строка
Строка в подвале - это область под основным содержимым страницы шириной в это содержимое (т.е. ширина окна минус ширина боковой панели). Необходимый код помещаем в файл 'custom-footer.htm' и находим строки:
private function getFooterData() : array { $skin = $this->getSkin(); $footerRows = []; foreach ( $this->getFooterLinks() as $category => $links ) {
Меняем их на:
private function getFooterData() : array { $skin = $this->getSkin(); $footerRows = []; /* custom footer row begins */ $footerFile = file_get_contents('custom-footer.htm', FILE_USE_INCLUDE_PATH); $items[] = [ 'id' => "footer-item-custom", 'html' => $footerFile, ]; $footerRows[] = [ 'id' => "footer-custom", 'className' => null, 'array-items' => $items ]; /* custom footer row ends */ foreach ( $this->getFooterLinks() as $category => $links ) {
Подвал. Произвольный банер
Банер (иконка, пиктограмма) в подвале - это небольшое изображение вроде банера MediaWiki, ими могут быть также счётчики и ссылки на дружественные проекты. Чтобы добавить перед имеющимся банерами свои, добавим необходимы код в файл 'custom-icons.htm' и подключим его в этой же функции getFooterData():
$footerIcons = $this->getFooterIcons( 'icononly' ); if ( count( $footerIcons ) > 0 ) { $items = []; foreach ( $footerIcons as $blockName => $blockIcons ) {
Меняем на:
$footerIcons = $this->getFooterIcons( 'icononly' ); if ( count( $footerIcons ) > 0 ) { $items = []; /*custom footer icons (counter, etc.) begins */ $footerFile = file_get_contents('custom-icons.htm', FILE_USE_INCLUDE_PATH); $items[] = [ 'id' => "footer-item-custom", 'html' => $footerFile, ]; /* custom footer icons ends */ foreach ( $footerIcons as $blockName => $blockIcons ) {
MediaWiki 1.31
Меняем ссылку логотипа
При нажатии на логотип, по умолчанию попадаем на Заглавную страницу. Настраивается это в главном файле темы, например VectorTemplate.php (ранее просто Vector.php) для темы Vector. Темы находятся в каталоге skins. Находим в файле фрагмент отвечающий за вывод логотипа:
<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>
и меняем его на свой, указав в title нужную всплывающую подсказку:
<!-- Change link from logo--> <div id="p-logo" role="banner"> <a class="mw-wiki-logo" href="http://mywiki.org" title="На главную страницу"></a> </div>
Адаптируемость под ширину окна
Тема Vector адаптируется под широкие окна. Если широта экрана достигает 982 px или превышает это значение, то применяется CSS из файла screen-hd.less.
Так, если мы переместили поисковую строку в боковую панель под логотип, то нужно указать её длину для узких окон и широких. Для этого добавляем в файл components/common.less
div#p-search { width: 140px; }
а в screen-hd.less
добавляем:
div#p-search { width: 150px; }
Добавляем раздел в боковое меню
1) Опишем добавляемый раздел в отдельном HTML файле sidebar_extra.html
:
<div class="portal" role="navigation" id="p-tb" aria-labelledby="p-tb-label"> <h3 id="p-tb-label">Семантика</h3> <div class="body"> <ul> <li><a href="/wiki/Special:Properties" title="Семантические свойства">Все свойства</a></li> <li><a href="/wiki/Special:SearchByProperty" title="Поиск по семантическим свойствам">Поиск по свойству</a></li> </ul> </div> </div>
2) В файле VectorTemplate.php добавим в раздел описания боковой панели <div id="mw-panel">
строки:
<!-- Add more links to sidebar --> <?php include('sidebar_extra.html'); ?>
Меняем цвет фона
Чтобы внесённые изменения не утратились с обновлением темы их лучше вносить на странице MediaWiki:Vector.css. При таком подходе настройки сохранятся в базе данных и при замене файлов темы не потеряются. Если же мы хотим изменить фон для всех сайтов в вики семействе, которые используют один набор файлов, но разные базы данных, то лучше вносить изменения в файлы.
MediaWiki:Vector.css
Изменяем фон вики на зелёный
html, body, #mw-page-base, #mw-head, #mw-head-base, #mw-panel, #footer, #p-logo { background-color: #CFC; }
Файлы темы Вектор
CSS таблицы темы Vector находятся в каталоге components. Для изменения фона страницы и меню слева нужно отредактировать в файле common.less правило:
body { background-color: @menu-background-color; }
Например, для задания светло-зелёного фона:
body { background-color: #a8e4a0; }
Для изменения фона верхнего меню в файле navigation.less меняем правило #mw-page-base, заменяя:
#mw-page-base { height: 5em; background-position: bottom left; background-repeat: repeat-x; /* This image is only a fallback (for IE 6-9), so we do not @embed it. */ background-image: url('images/page-fade.png'); .vertical-gradient(@body-background-color, @menu-background-color, 50%, 100%); background-color: @body-background-color; }
на
#mw-page-base { height: 5em; background-color: #ffdb58; }
Полезные ссылки
- VectorLight - создание облегчённой версии темы Вектор.