Jump to content

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

From mediawiki.org
This page is a translated version of the page Manual:Interface/Sidebar and the translation is 88% complete.
Outdated translations are marked like this.
Příklad postranního menu


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 – k zobrazení použijte 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]

Na stránku MediaWiki:Sidebar se dostanete buď:

  • Tím, že si po přihlášení otevřete v prohlížeci URL http://domena/vasewiki/index.php?title=MediaWiki:Sidebar&action=edit
  • Nebo tak, že do vyhledávacího pole vepíšete řetězec MediaWiki:Sidebar a potvrdíte klávesou Enter.
  • Či přes speciální stránku „Všechna systémová hlášení” (Special:AllMessages), kde si vyhledáte překládanou systémovou zprávu, co začíná řetězcem "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

Odkazy jsou vytvořeny s 2 hvězdičkami (nazývané prvky druhé úrovně). Například:

** 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" - Odkaz na článek w:Foo v anglické Wikipedii.
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:
  • ** Homepage|mainpage - Pracuje se systémovou zprávou MediaWiki:Mainpage (která obsahuje řetězec "MediaWiki").
  • ** Special:Recentchanges|Recent changes - Zobrazuje textový řetězec "Recent changes", protože ve jmenném prostoru MediaWiki neexistuje žádná systémová zpráva s tímto názvem.
Target link w:Foo is the english version interwiki article. For another language version must be used language code before the target article name. For example to polish version w:pl:Foo or shortly pl:Foo. But for the multilanguage wiki target as this, is better use Special:MyLanguage. You can try for example link to Help:Links article.
Special:MyLanguage/Help:Links#Interlanguage_links | helplinks
String 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.


Pořadí sekcí (prvků)

Některé vzhledy umožňují přizpůsobení pořadí některých speciálních prvků, jako je vyhledávací lišta, sada nástrojů a jazyky. To lze provést přidáním speciálních klíčových slov SEARCH, TOOLBOX a LANGUAGES do MediaWiki:Sidebar pomocí syntaxe nadpisu.

Některé vzhledy jako MonoBook však již nepodporují definování pozice vyhledávacího prvku a místo toho je vyhledávací prvek umístěn hned za první částí postranního panelu. V takovém případě, pro přesun vyhledávacího prvku nahoře, má řešení definovat prázdnou vedoucí sekci. Například:

* empty section
* navigation
** mainpage|mainpage
** Special:Recentchanges|Recent changed
* new heading
** portal-url|portal
** https://www.mediawiki.org|MediaWiki home

Všimněte si, že některé vzhledy mohou zobrazit první sekci odlišně nebo umístit nějaký prvek mezi první a druhou část (pokud existuje).

Bublinová nápověda a klávesové zkratky

Bublinová nápověda, je text, který se objeví, když je umístíte kurzor nad ikonu, obrázek, hypertextový odkaz či jiný prvek grafického uživatelského rozhraní.

Když přidáte nějakou položku na postranní panel, nebude se pro něj zobrazovat žádná bublinová nápověda, ale můžete ji vytvořit následujícím způsobem:

[3]

  • vytvořte wiki stránku s názvem "MediaWiki:Tooltip-n-<id položky>"
  • do ní vložte obsah, který se bude zobrazovat v bublině.

Klávesová zkratka, anglicky též 'accesskey' umožňuje uživateli pomocí klávesové zkratky okamžitě přejít na cílovou stránku odkazu, ke kterému je přiřazena.

Klávesovou zkratku přidat k odkazu takto:

  • vytvořte wiki stránku s názvem "MediaWiki:Accesskey-n-<id položky>"
  • a do obsahu této stránky napište klávesovou zkratku, která se má k "id položky" přiřadit.

Příklad:


Překlady

Použité textové řetězce, lze překládat prostřednictvím odpovídajících stránek ve jmenném prostoru MediaWiki.

Příklad: Řetězece, které nahrazují použitý řetězec "mainpage" (a odkazující na hlavní stránku), se berou z jazykových subverzí stránky MediaWiki:Mainpage. Chcete-li nastavit nebo změnit výchozí text, který se bude zobrazovat v německé lokalizaci rozhraní vaší wiki, umístěte 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.

Mějte prosím na paměti, že MediaWiki zobrazuje text postranního panelu v tom jazyce, který je výchozí pro vaši wiki. Pokud tedy vaše wiki používá jako výchozí jazyk francouzštinu, upravujte obsah stránky MediaWiki:Mainpage/fr kde je výchozí obsah postranního panelu který se bude zobrazovat ve francouzštině všem anonymním uživatelům, a těm, co si nezměnili v rámci svého profilu nastavení výchozího jazyka rozhraní.

Více o překladech a jejich použití viz Nápověda:Rozšíření:Translate/Překlad nestrukturovaných elementů .

Úpravy pro pokročilé

Postranní panel a jeho obsah lze modifikovat také pomocí JavaScriptu, a CSS, nebo úpravou PHP souborů na straně serveru. Než se ale do toho dáte, uvědomte si, že:

  • JavaScript je křehký: uživatelům s vypnutým JavaScriptem vaše skripty nebudou fungovat, a váš skript také může mít problémy nejenom u různých verzí prohlížečů webových stránek, ale také u některých použitých skinů (vzhledů).
  • Úpravou PHP souborů zas můžete relativně snadno zavléct do kódu nečekané chyby a také si zkomplikujete aktualizace, protože se vaše změny kódu zahodí, pokud si kód aktualizovaných souborů opět neupravíte.

Odstranění postranního panelu a loga ze stránky MediaWiki:Sidebar

Chcete-li odstranit postranní panel a logo:

Smažte veškerý obsah stránky MediaWiki:Sidebar a prázdnou stránku uložte.

A pak na stránku MediaWiki:Common.css vaší wiki přidejte následující kód:

#column-content { margin: 0 0 1em 0; }
#content { margin: 0 0 0 0; }
#p-cactions { left: .1em; }

Tím posunete hlavní textový blok vaší wiki až k levému okraji stránky.

Odstranění postranního panelu, tabů i vyhledávacího pole ze všech stránek


Odstranění loga a celého postranního panelu:

#p-logo, .generated-sidebar, #p-lang, #p-tb  { display:none; }

Smazání vyhledávacího pole:

#p-search { display:none; }

Smazání záložky diskuse:

#ca-talk { display:none!important; }

Odstranění karty Stránka:

#ca-nstab-main { display:none!important; }

Přinucení zpráv uživatelského rozhraní, ke sledování obsahu

Některé stránky by se někdy měly řídit jazykem obsahu, zejména u vícejazyčných webů. To lze ovládat nastavením $wgForceUIMsgAsContentMsg . Každá zpráva přepsaná tímto způsobem musí být explicitně zadána, například aby postranní panel odkazoval na verze dané jazykem obsahu pro hlavní stránku a stránku portálu přidejte následující

LocalSettings.php

code
$wgForceUIMsgAsContentMsg = [ 'mainpage', 'portal-url' ];

Přidání nebo odebrání sekce panelu nástrojů (JavaScript)

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

Toolbox se objeví vlevo pod MediaWiki:Sidebar. Sada nástrojů je dynamický prvek vyžadující programové metody, jako jsou rozšíření vzhledu, PHP (viz skins/MonoBook.php a vytvoření nového vzhledu) nebo JavaScript.

JavaScriptové řešení používá User:{username}//common.js / MediaWiki:Common.js, dostupné pro MediaWiki 1.9+.

Nyní jednoduše nakonfigurujte, který odkaz se má objevit ve které sekci. Pokud chcete, můžete také některé odkazy odstranit.

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 ) {
		// prostě ignorujme, co se stalo
		return;
	}
}

function CustomizeModificationsOfSidebar() {
	// Přidává [[Special:CategoryTree|Special:CategoryTree]] do sady nástrojů
	ModifySidebar( 'add', 'toolbox', 'CategoryTree', 'https://en.wikipedia.org/wiki/Special:CategoryTree' );
	// Odebere [[Special:Upload|Special:Upload]] ze sady nástrojů
	ModifySidebar( 'remove', 'toolbox', 'Upload file', 'https://en.wikipedia.org/wiki/Special:Upload' );
}

jQuery( CustomizeModificationsOfSidebar );
Použití
function CustomizeModificationsOfSidebar() - musí být přizpůsoben pro přidávání nebo odstraňování odkazů v konkrétních sekcích:
ModifySidebar( "action", "section", "name", "link" );
parametr hodnota
action add pro přidání odkazu; remove pro odstranění odkazu
section navigation, toolbox, languages ale také jakékoli jiné existující přizpůsobené sekce; daný odkaz bude přidán nebo odstraněn z této sekce
name obsahuje text odkazu
link obsahuje URL odkazu

Omezení úprav na určité skupiny uživatelů

Pokud chcete omezit úpravy odkazů na určitou skupinu uživatelů (např. byrokrat), změňte:

jQuery( CustomizeModificationsOfSidebar );

na

if ( mw.config.get( 'wgUserGroups', [] ).indexOf( 'bureaucrat' ) !== -1 ) {
	jQuery( CustomizeModificationsOfSidebar );
}

Pro omezení úprav na IP místo na konkrétní skupinu uživatelů použijte

if ( mw.config.get( 'wgUserGroups', [] ).indexOf( 'user' ) === -1 ) {
	jQuery( CustomizeModificationsOfSidebar );
}

Přidání nebo odebrání sekce sady nástrojů (PHP)

Do svého souboru LocalSettings.php můžete přidat háček popsaný na této stránce. Díky tomu můžete pomocí MediaWiki:Sidebar upravovat odkazy v panelu nástrojů (odebrat některé odkazy, změnit jejich název) a přidávat vlastní odkazy (např. přidat odkaz "Poslední změny" do navigačního panelu).

Vytvoření rozbalovacího či sbalovacího postranního panelu pro všechny uživatele (pouze vzhled Monobooku)

Pokud používáte vzhled Monobooku a nechcete minout rozbalitelný panel nabídek např. Vector skin, vložte následující kód do MediaWiki:Monobook.js své wiki.

/////////////////////////////////////////////////////////
// Fragment kódu, aby bylo možné položky postranního panelu rozbalit. 
// Tento kód použijte POUZE pro vzhled Monobooku. 
/////////////////////////////////////////////////////////

$( document ).ready( function() {
	// Nastavte výchozí rozbalené položky podle jejich nadpisu
	var defaultExpandItems = ['Navigation', 'Orga'];
	// Nastavte základní název pro soubory cookie, které uloží aktuální stav rozbalení
	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' );
	// Můžete změnit parametr expires a uložit cookie na delší nebo kratší než 7 dní jako je v tomto kódu
	$.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' );
	// Můžete změnit parametr expires a uložit cookie na delší nebo kratší než 7 dní jako je v tomto kódu
	$.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 );
	}
}

///////////////////////////////////////////////////////
///////////////////////////////////////////////////////

Šířka postranního panelu ve vzhledu Monobooku (CSS)

Šířku postranního panelu můžete změnit přidáním následujících pravidel CSS do MediaWiki:Monobook.css

všimněte si, že toto je článek a ne soubor. Tím se změní šířka na 15 em, pozice akcí a šířka portletu by měly být o jeden em nebo tak méně, takže jsem je v tomto příkladu nastavil na 14 em.

/* zvětšení šířky postranního panelu */
#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; }

Změna obsahu postranního panelu při přihlášení (PHP)

Nainstalujte a nakonfigurujte rozšíření DynamicSidebar .

Funkce analyzátoru v postranním panelu

Ačkoli to není přesně doporučeno, postranní panel podporuje funkce analyzátoru (jako je ParserFunctions ), za předpokladu, že ** je mimo funkci analyzátoru a funkce analyzátoru nezahrnuje více řádků. Například:

*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}}

funguje. Následující by však nefungovalo, protože funkce parseru zahrnuje více řádků:

*Heading
{{#ifeq:1|1|
**foo{{!}}
bar
|
**baz{{!}}fred
}}

Odstraňování problémů

Nezobrazují se změny

MediaWiki agresivně ukládá, pokud je to možné, obsah do mezipaměti, což často způsobuje, že navigační panel po změnách přetrvává. Vyčištění mezipaměti dotčených stránek by mělo situaci napravit. Chcete-li provést hromadné čištění všech mezipamětí najednou, zkuste soubor LocalSettings.php nebo ořezat tabulku objectcache ve vaší databázi (možná budete muset udělat obojí).

Také musíte mít $wgUseDatabaseMessages nastaveno na true. Také, pokud vaše odkazy neobsahují |, nebudou se zobrazovat kvůli tomuto řádku kódu v Skin.php: if ( strpos( $line, '|' ) !== false ) {

Pokud jste uživatel nebo průměrný správce wiki, nebudete moci provádět pokročilé činnosti uvedené výše, aby se změny zobrazily. Pokud ani čištění nefunguje, můžete někdy vidět změny CSS hned v náhledu (zejména při změně vašeho osobního CSS). Například: Změna šířky postranního panelu, odsazení nebo okrajů. Po uložení však může chvíli trvat, než se změny projeví. Pokud se po chvíli nic neobjeví, možná budete muset kontaktovat celkovou wiki nebo wiki farmu, sysop.

Malé popisky odkazů

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>

Sekce zmizí nebo se zobrazí neočekávaný obsah

Pokud se v sekci nezobrazuje nebo zobrazuje neočekávaný obsah, zkontrolujte, zda text záhlaví není názvem zprávy rozhraní, vyhledáním Special:AllMessages. Pokud ano, použijte jiný text záhlaví nebo vytvořte novou zprávu rozhraní a použijte ji.

Pokud například chcete jako text záhlaví použít "Sidebar", vytvořte zprávu rozhraní "MediaWiki:Sidebar-header" obsahující pouze "Sidebar". Poté použijte * sidebar-header jako záhlaví.

Sekce se nezobrazí, pokud neexistují žádné odkazy ve tvaru ** cíl | text odkazu (např. když byl zapomenut cíl).

Nefunkční odkazy po aktualizaci Special:Version

K tomu dojde např. pokaždé, když budou k dispozici novější překlady položek postranního panelu jazyka vašeho webu.

Pokaždé by bylo možné přidat nové stránky s přesměrováním, ale lepším řešením by bylo použít vlastní názvy položek na postranním panelu namísto sledování aktuálních překladů MediaWiki.

Související odkazy

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 .) Po přihlášení, upravte URL v adresovém řádku, kde místo aktuálního názvu stránky (např. Hlavní_stránka, resp. Main_page) vpište MediaWiki:Sidebar a pak odklepněte – pokud neuděláte při tom nějakou chybu, uvidíte stránku postranního panelu. (Použijete-li parametrizované URL, které bude vypadat tahle //domena/vasewiki/index.php?title=MediaWiki:Sidebar&action=edit, přejdete rovnou na editaci jejího kódu) 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. Kaare Mikkelsen (25.1.2012): Adding tooltips to sidebar items in MediaWiki (Wayback Machine 30.10.2022)