Руководство:Интерфейс/Боковая панель
Эта страница содержит документацию системного сообщения, т.е. вики-страницы, определяющей часть интерфейса MediaWiki. См. также базовую документацию. |
![](http://upload.wikimedia.org/wikipedia/commons/0/05/Example_sidebar.png)
MediaWiki:Sidebar позволяет пользователю изменять навигационную панель.
Панель навигации содержит ссылки на наиболее важные места в вики и предоставляет администраторам сайта место для добавления важного списка ссылок.
Например, большинство вики-сайтов содержат ссылки на страницу обсуждения в сообществе и некоторые страницы полезных инструментов.
Стиль Monobook и Vector помещают панель навигации в верхний левый угол (верхний правый для языков с прочтением справа налево) вместе со строкой поиска и панелью инструментов, но в других стилях расположение может отличаться. Эта боковая панель не показывается пользователям в мобильной версии сайта (то есть версии сайта, создаваемой с помощью Расширение:MobileFrontend / Skin:MinervaNeue - для этого используйте хук MobileMenu ).
Кастомизация боковой панели навигации
Чтобы настроить MediaWiki:Sidebar в wiki, вам сначала нужно войти в систему через пользователя, имеющего разрешение редактировать интерфейс. Для администраторов это включено по умолчанию.[1]
Вы можете получить доступ к MediaWiki:Sidebar одним из этих способов:
- Перейти по ссылке http://ваш_домен/wiki/index.php?title=MediaWiki:Sidebar&action=edit в своём браузере.
- Ввести MediaWiki:Sidebar в поле поиска и нажать кнопку «Enter».
- Зайти на страницу Special:AllMessages и поискать там «side».
Вот пример кода, добавленного в MediaWiki:Sidebar для боковой панели:
* navigation ** mainpage|Accueil ** Special:RecentChanges|Recent changes * new heading ** portal-url|Forums ** https://www.mediawiki.org|MediaWiki home
В результате этого примера появится следующая боковая панель:
Разделение панели навигации на новые разделы
Панель навигации может быть разделена на разделы, каждый из которых имеет свой собственный новый заголовок. Это делается путем добавления одной звездочки.
Заголовок для каждого раздела берется из элемента списка первого уровня ("навигация" и "новый заголовок" в приведенном выше примере).
Если этот текст соответствует имени сообщения интерфейса (существующей страницы с таким заголовком в пространстве имен MediaWiki), то в качестве метки используется текст этой страницы; в противном случае заголовок заголовка используется как есть.
Пожалуйста, обратите внимание, что {{int:}}
волшебное слово не работает, поскольку оно бесполезно: MediaWiki автоматически ищет перевод для отображения, прежде чем вернуться к сообщению по умолчанию.
В приведенном выше примере * navigation
и * new heading
являются заголовками разделов.
Создание ссылок в боковой панели
Links are created with 2 asterisks (called Second-level list elements). Пример:
** цель|текст ссылки
- цель
- Целью ссылки может быть имя сообщения интерфейса (страница в пространстве имен MediaWiki) или страница wiki, или внешняя ссылка. В любом случае ссылка может быть внутренним, интервики или внешним.[2]
- Выполните следующие действия, чтобы определить цель:
- Получите целевой текст.
- Если существует ранее созданное сообщение интерфейса или сообщение по умолчанию с таким именем, используйте содержимое этого сообщения вместо целевого текста.
- Если результат предыдущего шага является допустимым URL-адресом (начинающимся с http:// или другого протокола URL), ссылка будет указывать на этот URL-адрес.
- В противном случае он будет рассматривать его как целевую ссылку викилинка (ссылка на это название страницы или интервики).
- В случае, если это приведет к ссылке на '-', вся запись будет удалена с боковой панели. (Это полезно для удаления записи на всех языках путем изменения сообщения, содержащего ссылку).
- Примеры:
- "
** portal-url|portal
" - использует текст MediaWiki:Portal-url (который содержит "Project:Community portal"). - "
** https://www.mediawiki.org|MediaWiki home
" - ссылки на https://www.mediawiki.org, так как это допустимый URL. - "
** Special:RecentChanges|Recent changes
" - Links to Special:RecentChanges, since there is no interface message of that name and that is not a valid URL. - "
** w:Foo|Some interwiki page
" - ссылки на w:Foo — по той же причине.
- "
- текст ссылки
- The link text can be the name of an interface message (page in the MediaWiki namespace) or plain text.
- If the link text is the name of an existing or default interface message, the content of that message will be used. MediaWiki will check for localized versions; for example, if the current language is fr (French) and the link text is the interface message "forum", it will check for "forum/fr" before using "forum".
- Otherwise, the link text is used as the target as-is.
- Notice that the link text is not optional as in normal wiki links. If the link text is missing, the item is ignored.
- Примеры:
** Homepage|mainpage
- Uses MediaWiki:Mainpage (which contains "MediaWiki").** Special:Recentchanges|Recent changes
- Uses "Recent changes", since there is no interface message of that name.
Special:MyLanguage/Help:Links#Interlanguage_links | helplinks
helplinks
is translatable message from MediaWiki namespace, similary as portal
above, but target URL is result of the special page. Not generated from content of the translatable message as MediaWiki:portal-url. If the translated content of target page exists, is directly opened. If not, is opened default language version of it.
Section order (elements)
Some skins allow customizing the order of some special elements, like the search bar, toolbox, and languages. That can be done by adding the special keywords SEARCH, TOOLBOX and LANGUAGES respectively, to MediaWiki:Sidebar using the heading syntax.
However, some skins like MonoBook no longer support defining the position of the search element, and the search element is placed right after the first section of the sidebar instead. In that case, to move the search element at the top, the workaround is to define an empty leading section. For example:
* empty section * navigation ** mainpage|mainpage ** Special:Recentchanges|Recent changed * new heading ** portal-url|portal ** https://www.mediawiki.org|MediaWiki home
Note that some skins may display the first section differently, or place some element between the first and the second section (if any).
Tooltips and Accesskey
A tooltip is a message which appears when a cursor is positioned over an icon, image, hyperlink, or other element in a graphical user interface.
If you add an item to the sidebar, it will have no "tooltip". But you can create a tooltip by doing the following:
- create a wiki page named "MediaWiki:Tooltip-n-<id of the item>"
- and put the tooltip in that page.
An access key or accesskey allows a computer user to immediately jump to a specific part of a web page via the keyboard.
Accesskeys can also be created by doing the following:
- create a wiki page named "MediaWiki:Accesskey-n-<id of the item>"
- and put the accesskey in that page.
Пример:
* Homepage|mainpage-description
- Uses MediaWiki:Tooltip-n-mainpage-description and MediaWiki:Accesskey-n-mainpage-description.
Переводы
You can translate the strings, which you use, by editing the according pages in the MediaWiki namespace.
Example: - The string, which will replace the item named "mainpage", is taken from MediaWiki:Mainpage. To set/change this text for users, who display your wiki in German, you can put the according text on the page MediaWiki:Mainpage/de.
That way you can easily translate these texts through the MediaWiki interface.
Please note that MediaWiki will by default use the content of the Sidebar page in that language, which corresponds to the default language of your wiki. So, if your wiki e.g. uses French as its default language, edit MediaWiki:Mainpage/fr in order to show a modified sidebar to all users, who have not changed their language setting and to all anonymous users.
For more advanced translation, see Справка:Расширение:Перевод/Перевод неструктурированных элементов .
Расширенная настройка
The sidebar can be fully customized by implementing JavaScript or CSS, or by editing the PHP files directly. Before using these methods, note that:
- JavaScript is fragile: it will not work for users with JavaScript disabled, and scripts frequently fail in different browsers or skins.
- Editing the PHP files can easily cause unexpected errors, and your changes will be lost in the next update unless you manually change the new files.
Remove the Sidebar and main logo at MediaWiki:Sidebar
To completely remove the sidebar and logo:
Blank the MediaWiki:Sidebar page and save.
Then add:
#column-content { margin: 0 0 1em 0; }
#content { margin: 0 0 0 0; }
#p-cactions { left: .1em; }
This moves the main text of your wiki to the left.
Completely remove the sidebar, tabs and search bar
Deletes the logo, and the entire sidebar:
#p-logo, .generated-sidebar, #p-lang, #p-tb { display:none; }
Deletes the search bar:
#p-search { display:none; }
Deletes the talk tab:
#ca-talk { display:none!important; }
Deletes the Page tab:
#ca-nstab-main { display:none!important; }
Force UI-messages to follow content
Some pages should sometimes follow the content language, especially for multilingual sites. This can be controlled with the setting $wgForceUIMsgAsContentMsg . Each message overridden in this way must be explicitly given, for example to let the sidebar link to versions given by the content language for the main page and the portal page add the following to
LocalSettings.php
- code
$wgForceUIMsgAsContentMsg = [ 'mainpage', 'portal-url' ];
Добавление или удаление разделов панели инструментов
The toolbox appears on the left under MediaWiki:Sidebar in certain skins. On Vector 2022 it appears on the right of the screen (in LTR languages).
As of MediaWiki 1.43 you can append links to the toolbox using MediaWiki:Sidebar via MediaWiki:Sidebar.
* empty section * navigation * TOOLBOX ** portal-url|Forum
Adding toolbox items prior to 1.43 via JavaScript
The toolbox appears on the left under MediaWiki:Sidebar.
The toolbox is a dynamic element requiring programmatic methods such as skin extensions, PHP (see skins/MonoBook.php
and creating a new skin) or JavaScript.
The JavaScript solution uses User:{username}/common.js / MediaWiki:Common.js, available for MediaWiki 1.9+.
- Entire MediaWiki website: copy the script below into MediaWiki:Common.js
- One specific user: copy the script below into Special:MyPage/common.js (or the JS page for the user's current skin, such as Special:MyPage/monobook.js).
Now simply configure which link should appear in which section. You also can remove some links if you want to.
Code
function ModifySidebar( action, section, name, link ) {
try {
switch ( section ) {
case 'languages':
var target = 'p-lang';
break;
case 'toolbox':
var target = 'p-tb';
break;
case 'navigation':
var target = 'p-navigation';
break;
default:
var target = 'p-' + section;
break;
}
if ( action == 'add' ) {
var node = document.getElementById( target )
.getElementsByTagName( 'div' )[0]
.getElementsByTagName( 'ul' )[0];
var aNode = document.createElement( 'a' );
var liNode = document.createElement( 'li' );
aNode.appendChild( document.createTextNode( name ) );
aNode.setAttribute( 'href', link );
liNode.appendChild( aNode );
liNode.className = 'plainlinks';
node.appendChild( liNode );
}
if ( action == 'remove' ) {
var list = document.getElementById( target )
.getElementsByTagName( 'div' )[0]
.getElementsByTagName( 'ul' )[0];
var listelements = list.getElementsByTagName( 'li' );
for ( var i = 0; i < listelements.length; i++ ) {
if (
listelements[i].getElementsByTagName( 'a' )[0].innerHTML == name ||
listelements[i].getElementsByTagName( 'a' )[0].href == link
)
{
list.removeChild( listelements[i] );
}
}
}
} catch( e ) {
// let's just ignore what's happened
return;
}
}
function CustomizeModificationsOfSidebar() {
// Adds [[Special:CategoryTree|Special:CategoryTree]] to toolbox
ModifySidebar( 'add', 'toolbox', 'CategoryTree', 'https://en.wikipedia.org/wiki/Special:CategoryTree' );
// Removes [[Special:Upload|Special:Upload]] from toolbox
ModifySidebar( 'remove', 'toolbox', 'Upload file', 'https://en.wikipedia.org/wiki/Special:Upload' );
}
jQuery( CustomizeModificationsOfSidebar );
- Использование
function CustomizeModificationsOfSidebar()
- Has to be customized for adding or removing links in specific sections:
ModifySidebar( "action", "section", "name", "link" );
параметр | значение |
---|---|
action
|
add добавить ссылку; remove удалить ссылку |
section
|
navigation, toolbox, languages but also any other existing customized section; the given link will be added to or removed from this section |
name
|
contains the text of the link |
link
|
contains the URL of the link |
Ограничение изменений для определенных групп пользователей
If you want to restrict the modification of the links to a specific user group (e.g. bureaucrat), change:
jQuery( CustomizeModificationsOfSidebar );
to
if ( mw.config.get( 'wgUserGroups', [] ).indexOf( 'bureaucrat' ) !== -1 ) {
jQuery( CustomizeModificationsOfSidebar );
}
For restricting the modifications to IPs instead of a specific user group, use
if ( mw.config.get( 'wgUserGroups', [] ).indexOf( 'user' ) === -1 ) {
jQuery( CustomizeModificationsOfSidebar );
}
Add or remove toolbox sections (PHP)
You can add in your file LocalSettings.php the hook described on this page. With this, you can modify via MediaWiki:Sidebar the links in the toolbox panel (remove some links, change their name) and add custom links (e.g. add the "Recent changes" link there instead of the navigation panel).
Make expanding/collapsing sidebar for all users (Monobook skin only)
If you use the Monobook skin and don't want to miss the expandable menu bar from e.g. Vector skin, paste the following code into MediaWiki:Monobook.js of your wiki.
/////////////////////////////////////////////////////////
// Code snippet to make your sidebar items expandable.
// Use this code ONLY for the Monobook skin.
/////////////////////////////////////////////////////////
$( document ).ready( function() {
// Set the default expanded items by their headline
var defaultExpandItems = ['Navigation', 'Orga'];
// Set the basic-name for the cookies, which save the current state of expanding
var expandCookieName = 'disdance_project_wiki_nav_expanded_';
var maxHeights = [];
var expandeds = [];
var labels = [];
initNav();
});
function initNav() {
$( '#p-logo' ).css({'position': 'relative', 'display': 'block'});
$( '.generated-sidebar h5,#p-tb h5 ').each( function( i ) {
var id = $( this ).parent().attr( 'id' );
maxHeights[id] = $( this ).next( 'div' ).height();
var str = $( this ).html();
labels[id] = str;
if ( $.cookie( expandCookieName + id ) == 'false' ) {
expandeds[id] = false;
minimize( $( this ) );
} else if ( $.cookie( expandCookieName + id ) == 'true' ) {
expandeds[id] = true;
maximize( $( this ) );
} else if ( defaultExpandItems.indexOf( str ) == -1 ) {
expandeds[id] = false;
minimize( $( this ) );
} else {
expandeds[id] = true;
maximize( $( this ) );
}
$( this ).css({'cursor': 'pointer'});
$( this ).click( toggleNav );
} );
}
function minimize( target ) {
var id = $( target ).parent().attr( 'id' );
// You can change the expires parameter to save the cookie longer/shorter than 7 days like in this code
$.cookie( expandCookieName + id, 'false', { expires: 7} );
var str = labels[id] + ' ►';
$( target ).next( 'div' ).animate({'height': '0px'});
$( target ).html( str );
}
function maximize( target ) {
var id = $( target ).parent().attr( 'id' );
// You can change the expires parameter to save the cookie longer/shorter than 7 days like in this code
$.cookie( expandCookieName + id, 'true', { expires: 7} );
var str = labels[id] + ' ▼';
var newHeight = maxHeights[id];
$( target ).next( 'div' ).animate({'height': newHeight + 'px'});
$( target ).html( str );
}
function toggleNav( e ) {
var id = $(e.target ).parent().attr( 'id' );
expandeds[id] = !expandeds[id];
if( expandeds[id] == true ) {
maximize( e.target );
} else {
minimize( e.target );
}
}
///////////////////////////////////////////////////////
///////////////////////////////////////////////////////
Sidebar width in Monobook skin (CSS)
You can change the width of your sidebar by adding the following CSS rules to your MediaWiki:Monobook.css
note that this is an article, not a file. This changes the width to 15em, the actions position and portlet width should be an em or so less, so I've set them to 14em in this example.
/* increase sidebar width */
#column-content { margin-left: -15em; }
#column-content #content { margin-left: 15em; }
#p-logo a, #p-logo a:hover { width: 15em; }
#p-cactions { left: 14.5em; }
.portlet { width: 14em; }
#column-content { margin-left: -14em; }
#content.mw-body { margin-left: 14em; }
Change sidebar content when logged in (PHP)
Install and configure the DynamicSidebar extension.
Parser functions in sidebar
Although it is not exactly recommended, the sidebar does support parser functions (such as Функции парсера ), provided the **
is outside the parser function, and the parser function does not span multiple lines. For example:
*Heading **{{#ifeq:{{NAMESPACE}}|User|Page-to-link-to{{!}}text-to-show-on-user-page}} **{{#ifeq:{{NAMESPACE}}|Talk|Another-Page-to-link-to{{!}}text-to-show-on-talk-page}}
works. However the following would not work since the parser function spans multiple lines:
*Heading {{#ifeq:1|1| **foo{{!}} bar | **baz{{!}}fred }}
Разрешение проблем
Изменения не отображаются
MediaWiki aggressively caches content if possible, which often causes the navigation bar to persist after changes.
Purging the cache of affected pages should correct the situation.
To perform a mass-purge of all caches at once, touch the LocalSettings.php
file or truncate the objectcache
table in your database (you may have to do both).
You also need to have $wgUseDatabaseMessages set to true
.
Also, if your links don't have a |
in them, they will not show up because of this line of code in Skin.php:
if ( strpos( $line, '|' ) !== false ) {
If you are a user or average wiki admin, you will not be able to do the advanced stuff above to get changes to show up. If purging does not work either, you can sometimes still see CSS changes right away in preview (especially when changing your personal CSS). For example; changing the sidebar width, padding, or margins. Changes can take awhile to show up after saving though. If nothing shows up after awhile you may need to contact the overall wiki, or wiki farm, sysop.
Метки ссылок в нижнем регистре
If your links are not being capitalized as intended, try adding spaces around the bar character; for example:
** http://www.example.com/download.php?file=44555 | <span lang="en" dir="ltr" class="mw-content-ltr">Download</span>
Sections disappear or show unexpected content
If a section does not display or displays unexpected content, check that the header text isn't the name of an interface message by searching Special:AllMessages. If it is, use a different header text, or create a new interface message and use it.
For example, if you want to use "Sidebar" as header text, create the interface message "MediaWiki:Sidebar-header" containing only "Sidebar". Then, use * sidebar-header
as header.
Sections are not displayed if there are no links of the form ** target | link text
(e.g. when the target was forgotten).
Неработающие ссылки после изменения Special:Version
This will happen e.g., each time there are newer translations for your site language's sidebar items.
One could add new redirect pages each time, but a better solution would be to use one's own sidebar item names instead of trying to keep track of the current MediaWiki translations.
См. также
- Боковое меню
- Quickbar
- Руководство:Interface/Sidebar/Hacks - Unsupported PHP modifying hacks that used to be on this page
- Manual:$wgEnableSidebarCache
- Категория:Расширения меню
- Manual:Remove Tabs - Remove MediaWiki tabs
Примечания
- ↑
(Для получения информации о назначении разрешений группам или пользователям смотрите раздел Руководство:Права пользователя .)
Затем используйте ссылку на страницу в вашей вики, но замените заголовок вашей вики-страницы (например,
Main_Page
) в строке URL / адреса наMediaWiki:Sidebar
и загрузите эту страницу - теперь вы должны увидеть текущее содержимое боковой панели. (Возможно, вам придется использовать синтаксис //ваш_домен/ваша_вики/index.php?title=MediaWiki:Sidebar&action=edit, если вы используете длинные URL-адреса.) Если содержимое боковой панели уже было изменено, вы можете нажать на ссылку Редактировать или Редактировать источник, в противном случае вам может потребоваться сначала создать страницу, нажав на Создать или Создать источник. - ↑ В некоторых случаях (например, ссылки с символом "&") необходимо сообщение интерфейса. Целевая ссылка не может зависеть от языка интерфейса, установленного в настройках.
- ↑ Kaare Mikkelsen (25.1.2012): Adding tooltips to sidebar items in MediaWiki (Wayback Machine 30.10.2022)