Příručka:Rozhraní/Postranní menu

This page is a translated version of the page Manual:Interface/Sidebar and the translation is 47% complete.
Příklad postranního menu
See also: Manual:Remove Tabs

MediaWiki:Sidebar umožňuje uživateli upravit navigační panel. Navigační panel, který poskytuje odkazy na nejdůležitější místa na wiki a poskytuje správcům stránek místo pro přidání důležité sbírky odkazů. Většina wiki například odkazuje na svou komunitní diskusní stránku a stránky s užitečnými nástroji.

U vzhledů Monobook a Vector je menu umístěno nalevo (u jazyků psaných zprava doleva napravo) – odtud také postranní menu. Zobrazuje se, jako vyhledávací pole, na každé stránce. Jiná zobrazení jej mohou mít umístěné jinak. Tento postranní panel se nezobrazuje uživatelům webu Mobile (tj. verze webu vytvořená Extension:MobileFrontend / Skin:MinervaNeue ) – použijte k tomu háček MobileMenu ).

Úprava postranního menu

Chcete-li upravit MediaWiki:Sidebar na wiki, musíte být nejprve přihlášeni jako uživatel, který má oprávnění editinterface. Pro administrátory je tato možnost ve výchozím nastavení povolena.[1]

You can access to MediaWiki:Sidebar by either:

  • Going to http://yourdomain/wiki/index.php?title=MediaWiki:Sidebar&action=edit in your browser.
  • Typing MediaWiki:Sidebar in search bar, and validating with Enter.
  • From Special:AllMessages, searching for "side".

Zde je příklad kódu přidaného v MediaWiki:Sidebar pro postranní panel:

* navigation
** mainpage|Accueil
** Special:RecentChanges|Recent changes
* new heading
** portal-url|Forums
** https://www.mediawiki.org|MediaWiki home

Tento příklad bude mít za následek následující postranní panel:

 
Příklad postranního panelu
Pokud musíte vytvořit novou stránku, zobrazí se vám výchozí obsah postranního panelu v editoru. Chcete-li úspěšně vytvořit stránku MediaWiki:Sidebar, musíte před uložením změnit obsah.

Rozdělení navigační lišty do nových sekcí

Navigační panel lze rozdělit na části, z nichž každá má svůj vlastní nový nadpis. To se provádí přidáním jedné hvězdičky.

Nadpis pro každou sekci je převzat z prvku seznamu první úrovně ("navigace" (navigation) a "nový nadpis" (new heading) v příkladu výše). Pokud tento text odpovídá názvu zprávy rozhraní (existující stránka tohoto názvu ve jmenném prostoru MediaWiki), pak se jako štítek použije text této stránky; jinak se nadpis záhlaví použije tak, jak je. Vezměte prosím na vědomí, že {{int:}} magické slovo nefunguje, protože je zbytečné: MediaWiki automaticky hledá překlad, který by se měl zobrazit předtím, než se vrátí k výchozí zprávě.

Ve výše uvedeném příkladu jsou * navigation a * new heading nadpisy oddílů.

Vytváření odkazů v postranním panelu

Links are created with 2 asterisks (called Second-level list elements). For example:

** cíl|text odkazu
cíl
Cílem odkazu může být název zprávy rozhraní (stránky ve jmenném prostoru MediaWiki) nebo stránky wiki nebo externí odkaz. V obou případech může být odkaz interní, interwiki nebo externí.[2]
Chcete-li určit cíl, postupujte takto:
  1. Získejte cílový text.
  2. Pokud existuje aktuální nebo výchozí zpráva rozhraní s tímto názvem, použijte místo cílového textu obsah této zprávy.
  3. Pokud je výstupem z předchozího kroku platná URL (začínající http:// nebo jiným URL protokolem), bude odkaz ukazovat na tuto URL.
  4. V opačném případě to bude považovat za cíl odkazu na wikilink (odkazující na název této stránky nebo interwiki).
  5. V případě, že bude odkazem '-', bude celý záznam odstraněn z postranního panelu. (To je užitečné pro odstranění záznamu ve všech jazycích změnou zprávy obsahující odkaz).
Příklady:
  • "** portal-url|portal" používá text MediaWiki:Portal-url (který obsahuje "Project:Community portal").
  • "** https://www.mediawiki.org|MediaWiki home" odkazuje na https://www.mediawiki.org, protože toto je platná adresa URL.
  • "** Special:RecentChanges|Recent changes" odkazuje na Special:RecentChanges, protože neexistuje žádná zpráva rozhraní s tímto názvem a není to platná adresa URL.
  • "** w:Foo|Some interwiki page" odkazuje na w:Foo ze stejného důvodu.
text odkazu
Text odkazu může být název zprávy rozhraní (stránka ve jmenném prostoru MediaWiki) nebo prostý text.
  • Pokud je text odkazu názvem existující nebo výchozí zprávy rozhraní, použije se obsah této zprávy. MediaWiki zkontroluje lokalizované verze; například pokud je aktuálním jazykem fr (francouzština) a text odkazu je zpráva rozhraní "forum", před použitím "forum" zkontroluje přítomnost "forum/fr".
  • Jinak se text odkazu použije jako cíl tak, jak je.
  • Všimněte si, že text odkazu je nevolitelný jako u normálních odkazů na wiki. Pokud text odkazu chybí, položka je ignorována.
Příklady:
  • ** Domovská stránka|hlavní stránka používá MediaWiki:Mainpage (kterou obsahuje "MediaWiki").
  • ** Special:Recentchanges|Poslední změny používá "Poslední změny", protože neexistuje žádná zpráva rozhraní s tímto názvem.

Pořadí sekcí (prvků)

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).

Popisky a přístupový klíč

Popisek je zpráva, která se objeví, když je kurzor umístěn nad ikonou, obrázkem, hypertextovým odkazem nebo jiným prvkem v grafickém uživatelském rozhraní.

Pokud přidáte položku na postranní panel, nebude mít žádný "popisek". Můžete však vytvořit nápovědu takto:[3]

  • vytvořte wiki stránku s názvem "MediaWiki:Tooltip-n-<id položky>"
  • a vložte na tuto stránku popisek.

Přístupový klíč nebo accesskey umožňuje uživateli počítače okamžitě přejít na určitou část webové stránky pomocí klávesnice.

Přístupové klíče lze také vytvořit takto:

  • vytvořte wiki stránku s názvem "MediaWiki:Accesskey-n-<id položky>"
  • a vložte přístupový klíč na tuto stránku.

Příklad:

Překlady

Řetězce, které používáte, můžete přeložit úpravou příslušných stránek ve jmenném prostoru MediaWiki.

Příklad: Řetězec, který nahradí položku s názvem "mainpage" (hlavní stránka), je převzat z MediaWiki:Mainpage. Pro nastavení/změnu tohoto textu pro uživatele, kteří zobrazují vaši wiki v němčině, můžete umístit odpovídající text na stránku MediaWiki:Mainpage/de.

Tímto způsobem můžete snadno překládat tyto texty prostřednictvím rozhraní MediaWiki.

Upozorňujeme, že MediaWiki bude standardně používat obsah stránky postranního panelu v tom jazyce, který odpovídá výchozímu jazyku vaší wiki. Pokud tedy vaše wiki např. používá francouzštinu jako výchozí jazyk, upravte MediaWiki:Mainpage/fr tak, aby se všem uživatelům, kteří nezměnili nastavení jazyka, a všem anonymním uživatelům zobrazil upravený postranní panel.

Pro pokročilejší překlad viz Nápověda:Rozšíření:Translate/Překlad nestrukturovaných elementů .

Pokročilé přizpůsobení

The sidebar can be fully customized by implementing JavaScript or Cascading Style Sheets, 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

See also: Manual:Remove Tabs

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' ];

Add or remove toolbox sections (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+.

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 );
Usage
function CustomizeModificationsOfSidebar() has to be customized for adding or removing links in specific sections:
ModifySidebar( "action", "section", "name", "link" );
parameter value
action add to add a link; remove to remove a link
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

Restricting modifications to specific usergroups

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 ParserFunctions), 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
}}

Troubleshooting

Changes not showing up

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.

Lowercase link labels

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 | Download

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).

Broken links after updating 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.

See also

References

  1. (O tom jak se pracuje s právy a jak se přiřazují skupiny práv uživatelům, více viz Příručka:Uživatelská práva .) Poté použijte odkaz na stránku na své wiki, ale nahraďte název své wiki stránky (např. Hlavní_stránka) v adresním řádku/adresním řádku MediaWiki:Sidebar a načtěte tuto stránku – nyní byste měli vidět aktuální obsah postranní panel. (Pokud používáte dlouhé adresy URL, možná budete muset použít syntaxi //yourdomain/yourwiki/index.php?title=MediaWiki:Sidebar&action=edit.) Pokud byl obsah postranního panelu již změněn, můžete kliknout na odkaz Upravit nebo Upravit zdroj, jinak možná budete muset stránku nejprve vytvořit kliknutím na Vytvořit nebo Vytvořit zdroj.
  2. V některých případech (jako jsou odkazy se znakem "&") je nutná zpráva rozhraní. Cíl odkazu nemůže být závislý na jazyku rozhraní nastaveném v předvolbách.
  3. http://www.kaarebmikkelsen.dk/?p=174