Help: Šablony

This page is a translated version of the page Help:Templates and the translation is 100% complete.
Other languages:
Bahasa Indonesia • ‎Deutsch • ‎English • ‎Lëtzebuergesch • ‎Napulitano • ‎Nederlands • ‎Tagalog • ‎Tiếng Việt • ‎Türkçe • ‎Zazaki • ‎català • ‎dansk • ‎español • ‎français • ‎hrvatski • ‎italiano • ‎lietuvių • ‎polski • ‎português • ‎português do Brasil • ‎română • ‎slovenčina • ‎suomi • ‎čeština • ‎беларуская (тарашкевіца)‎ • ‎български • ‎русский • ‎српски / srpski • ‎українська • ‎עברית • ‎اردو • ‎العربية • ‎سنڌي • ‎فارسی • ‎پښتو • ‎भोजपुरी • ‎हिन्दी • ‎বাংলা • ‎ಕನ್ನಡ • ‎ไทย • ‎中文 • ‎日本語 • ‎ꯃꯤꯇꯩ ꯂꯣꯟ • ‎한국어
PD Poznámka: Editací této stránky souhlasíte s uvolněním svého příspěvku pod licencí CC0. Více informací se dočtete na stránce Public Domain Help Pages.
PD

Máte-li standardní texty, které chcete zařadit na několika stránkách, je funkce šablon ideálním nástrojem. Na rozdíl od rozšíření (extensions) a mediálních souborů neexistuje centrální úložiště šablon. Do šablony lze nově psát nebo uložit duplicitní práci, která již byla provedena, exportovat z jiné wiki, např. Wikipedia a poté importovat do cílové wiki.

Vytvoření

Šablony jsou standardní wiki stránky, jejichž obsah je navržen tak, aby byl uvnitř jiných stránek přeložen (vložen). Šablony se řídí konvencí, že název je předponou "Template:" a přiřadí jej tomuto jmennému prostoru; kromě toho je můžete vytvořit jako každou jinou wiki stránku.

Nejjednodušší použití šablon je následující. Pokud vytvoříte stránku s názvem „Template:Welcome“ (Šablona: Vítejte) s obsahem:

Ahoj! Vítejte na wiki.

vytvořili jste svou první šablonu! Pokud zadáte kód:

{{Welcome}}

na jakékoli jiné stránce se zobrazí text „Ahoj! Vítejte na wiki.“. Obsah šablony je „přenesen“ na tuto stránku, tj. Je integrován na stránce.

Kód {{Welcome}} můžete vložit na kterémkoli místě kterékoli stránky, na které chcete někoho přivítat. Předpokládejme, že se používá na 100 stránkách. Pokud změníte obsah šablony na:

Ahoj! Vítejte na této skvělé wiki.

znovu na kterékoli ze 100 stránek, kde byla šablona použita, uvidíte nový text místo původního. Tímto způsobem jste změnili obsah 100 stránek, aniž byste je upravovali, protože na tyto stránky je přenesena šablona.

Toto je základní princip. Existuje několik dalších funkcí transluze, které obohacují tento mechanismus a činí šablony velmi užitečnými.

Použití

Šablony lze použít na jiných stránkách těmito způsoby:

  • {{Name}} - jak je popsáno výše, bude tento odkaz dynamicky nahrazen aktuálním obsahem [[Template:Name]] v okamžiku načtení stránky s odkazem na šablonu. Odkaz zůstane ve zdroji stránky nezměněn.
  • {{subst:Name}} - při použití tohoto odkazu šablony bude jednou provždy nahrazen obsahem [[Template:Name]] v době, kdy je stránka s odkazem uložena: kopie obsahu [[Template:Name]] bude nahrazena odkazem na šablonu. Obsah je pak součástí stránky a může být upravován normálně, odděleně od originálu. Poznámka: Pozdější změny na stránce zdrojové šablony nebudou přeneseny na stránku s odkazem na šablonu.
  • {{safesubst:Name}} - toto bylo zavedeno s cílem umožnit nahrazení, které nepřerušuje transkluzi (zahrnutí stejného obsahu do více dokumentů, aniž by bylo nutné tyto dokumenty upravovat samostatně), viz w:en:Help:Substitution#The safesubst: modifier.
  • {{msgnw:Name}} zahrnuje šablonu ve formě, která ji zobrazuje jako syrovou syntaxi wiki (způsob <nowiki> ano), když je stránka, která ji obsahuje, načtena.

Ve skutečnosti lze běžnou wiki stránku použít také jako šablonu, jednoduše zadáním jmenného prostoru, ve kterém se nachází, takže:

  • {{Template:Pagename}} zahrnuje [[Template:Pagename]]
  • {{Talk:Pagename}} zahrnuje [[Talk:Pagename]]
  • {{:Pagename}} zahrnuje [[Pagename]]
    • {{subst::Pagename}} se nahrazuje obsahem[[Pagename]]

Pokud takový obor názvů neexistuje, považuje se celý název za šablonu:

  • {{Foo:Bar}} zahrnuje [[Template:Foo:Bar]]

Parametry

Pro obohacení mechanismu transkluze umožňuje MediaWiki předávání parametrů do šablony, když je transkluována. Parametry umožňují šabloně produkovat odlišný obsah nebo mají různá chování.

Předpokládejme, že chcete vložit malou poděkovací poznámku na diskusní stránku dalších uživatelů, například:

Díky… za všechno vaše úsilí. Zdraví Já

Poděkování bude mít důvod (v tomto případě „všechno vaše úsilí“) a podpis („Já“). Vaším cílem je, aby se kterýkoli uživatel mohl z jakéhokoli důvodu poděkovat jinému uživateli.

Aby poznámka vypadala všude, kde se používá stejně, můžete definovat například šablonu s názvem Šablona:Thankyou . Ačkoli poznámka vypadá podobně, kdykoli uživatel děkuje jinému uživateli, jeho konkrétní obsah (tj. Důvod a podpis) se bude lišit. Z tohoto důvodu byste "Důvod" a "Podpis" měli předat jako parametry. Pokud ignorujeme zbývající prvky pro formátování rámečku a umístění obrázku, bude hlavní obsah šablony následující:

'''Děkuji...'''
za {{{1}}}.
kdo {{{2}}}

Všimněte si použití {{{1}}} a {{{2}}}. Toto je způsob, jak v rámci šablon identifikovat parametry, které budou předány při použití šablony. Všimněte si, že v rámci šablony je každý parametr obklopen třemi složenými závorkami: {{{ }}}. To se liší od běžného použití názvu šablony.

Při použití šablony na stránce vyplníte hodnoty parametrů oddělené znakem „svislítko“ (|). MediaWiki umožňuje předávání parametrů do šablony třemi způsoby: anonymně, číslováním a pojmenováním.

Anonymní parametry

Chcete-li předat anonymní parametry, zadejte postupně seznam hodnot těchto parametrů:

{{Thankyou|všechno vaše úsilí|Já}}

V tomto případě, {{Thankyou}} šablona přijímá parametry {{{1}}}=za všechno vaše úsilí a {{{2}}}=Já, vytvoří:

Díky… za všechno vaše úsilí. Zdraví Já

Pořadí, ve kterém jsou předávány anonymní parametry, je pro jeho chování zásadní. Obrácení pořadí parametrů:

{{Thankyou|Já|všechno vaše úsilí}}

by přineslo tento výsledek:

Díky… za Já. Zdraví všechno vaše úsilí

Identifikace parametrů podle pořadí (pomocí nowiki>{{{1}}}</nowiki> atd.) funguje pouze s anonymními parametry. Žádné parametry identifikované jménem, jak je uvedeno níže, nebudou přístupné do šablony pomocí pořadových čísel.
Pokud se v argumentu parametru anonymní šablony objeví znaménko rovná se, může být tento parametr nesprávně interpretován jako pojmenovaný parametr (což je vysvětleno níže v tomto dokumentu), který text před znaménkem rovná se považuje za název parametru a text za ním jako hodnotu argumentu. Toto je běžný problém, pokud potřebujete zahrnout externí odkaz nebo prvek HTML s atributy (viz Task 16235). Řešením je použít místo toho pojmenované parametry nebo dokonce číslované parametry, jak je vysvětleno v následující části.

Číslované parametry

Chcete-li předat parametry podle čísla, identifikujte každý parametr při jeho předávání:

{{Thankyou|2=Já|1=tvé přátelství}}

Tentokrát šablona {{Thankyou}} přijímá parametry {{{1}}}=tvé přátelství a {{{2}}}=Já, i když byly dodány v obráceném pořadí a produkují: Díky… za tvé přátelství. Zdraví Já

To může být užitečné, pokud některý z očíslovaných parametrů obsahuje znak „=“.
Příklad
{{Thankyou|1=adding “=”|2=Me}}
vytváří
Díky…

za dodatek “=”. Zdraví Já

  Varování: Také to vyžaduje očíslování každého dalšího parametru.

Pojmenované parametry

Třetí způsob je předávání parametrů namísto čísel. V tomto případě by se obsah šablony změnil na:

'''Děkuji...'''
za {{{reason}}}.
kdo, {{{signature}}}

V šabloně používáme parametr {{{reason}}} a {{{signature}}} místo čísla. Chcete-li tyto parametry předat jménem, identifikujte při předávání každý parametr:

{{Thankyou|signature=Já|reason=že jsi tím, kým jsi}}

V tomto případě šablona {{Thankyou}} přijímá parametry {{{{reason}}}=že jsi tím, kdo jsi a {{{signature}}}}=Já a produkuje:

Díky… za že jsi tím, kdo jsi. Zdraví Já

Pojmenované parametry rozlišují velká a malá písmena, takže:

{{Thankyou|signature=Já|Reason=že jsi tím, kdo jsi|reason=je citlivý na velikost písmen}}

zobrazí: Díky… za je citlivý na velikost písmen. Zdraví Já

Výhodou použití pojmenovaných parametrů ve vaší šabloně, kromě toho, že lze předat parametry v objednávce, je to, že kód šablony je mnohem snáze pochopitelný, pokud existuje mnoho parametrů.

Výchozí hodnoty

Pokud převedete šablonu, která očekává parametry, ale neposkytnete jejich argumenty, tímto způsobem:

{{Thankyou}}

v příkladu s číslovanými parametry výše získáte následující:

Díky… za {{{1}}}. Zdraví {{{2}}}

Vzhledem k tomu, že nebyly předány žádné argumenty, představuje šablona samotné parametry namísto jejich příslušných hodnot. V těchto případech může být užitečné definovat výchozí hodnoty pro parametry, tj. Hodnoty, které budou použity, pokud nebude předána žádná hodnota. Například pokud se obsah šablony změní na:

'''Děkuji...'''
za {{{reason|všechno}}}.
kdo, {{{signature|Já}}}

pak {{reason|všechno}}< definuje, že pokud není poskytnut žádný argument pro parametr {{{reason}}}, pak bude použita hodnota všechno. Podobně {{{signature|Já}}}, výchozí parametr {{{signature}}} na hodnotu . Výsledkem opětovného převedení šablony bez předání argumentu je následující: Díky… za všechno. Zdraví Já

Often default values are used to specify alternate names of parameters. For example, if you have {{{a|{{{b|}}} }}}, the template will first look for a parameter named "a". If it is not set, it will use the parameter named "b". If neither "a" nor "b" is set, it will output nothing.

Evaluation

This is an advanced topic which you can skip unless you need it

Generally speaking, template parameters are substituted into the template after tokenization, but as is. They are not evaluated until they are used.

This has a few consequences. First of all, if you have a Template:Start containing {{mytemplate, and a Template:End containing |foo=bar}}, and put {{start}}{{end}} on a page, mytemplate isn't transcluded, because tokens like "|" cannot be added by a template and keep their special meaning in templates. You can still use templates to control the name of a parameter or template, but you cannot split a template call amongst multiple templates.

The second consequence of this is dead-code elimination. If you make a template call like {{ #foreach: foo$n$_bar | foo$n$_bar = {{{foo$n$_bar}}}
}}
, and Template:Foo does not contain {{{1}}}, then the displaytitle is not used, since it is only evaluated when needed, and it there is no parameter to substitute it into, so it is never evaluated. This usually comes into play when using Extension:ParserFunctions, and can be especially noticed when used in combination with the int: magic word that varies by user language.

Template calls starting with the magic word subst: or safesubst: are evaluated in a separate first pass that only happens at save time, along with ~~~~ and links using the pipe trick. If they cannot be evaluated during the first pass, subst: calls are ignored, and safesubst: are treated as if a normal template.

Many but not all parser functions, parser tags and trancluded special pages are not directly included like templates but instead are replaced by a "strip marker". This means you cannot manipulate the results with parser functions like padleft: or similar functions from extensions, as they see the strip marker instead of the result of the parser function.

Rekurze v šablonách

Zahrnutí šablony samo o sobě nespustí MediaWiki do nekonečné rekurze (určitá procedura nebo funkce znovu volána dříve, než je dokončeno její předchozí volání). MediaWiki zastaví rekurzi tučným názvem šablony. Pokud je například obsah „Template:Aaaa“ „{{Aaaa}}“, zobrazí se jako „Template:Aaaa“ a zobrazí Zjištěná smyčka šablony: Template:Aaaa.

Zahrnutí kontrolní šablony

Ve výchozím nastavení je obsah šablony zobrazen jako celek, a to jak při přímém prohlížení, tak při zahrnutí na jinou stránku. Můžete však určit, které části šablony se budou zobrazovat a zahrnout pomocí značek <noinclude>, <includeonly> a <onlyinclude>.

Všechno mezi <noinclude> a </noinclude> bude vidět pouze tehdy, když se stránka šablony prohlíží přímo, ale ne, když je zahrnuta na jiné stránce. To je užitečné, pokud chcete do šablony zahrnout text nebo kód, který nechcete šířit na žádné stránky, které jej obsahují, jako například:

  • Odkazy při kategorizaci samotné šablony
  • Mezijazyčné odkazy na podobné šablony v jiných jazycích
  • Vysvětlující text k použití šablony

Podobně bude cokoli mezi <includeonly> a </includeonly> zpracováno a zobrazeno pouze při zahrnutí stránky, ale ne při přímém prohlížení stránky šablony a je užitečné v situacích, jako například:

  • kategorizace stránek, které obsahují šablonu. Poznámka: Při změně kategorií použitých šablonou tímto způsobem nemusí být kategorizace stránek, které tuto šablonu obsahují, aktualizována okamžitě, ale až za nějaký čas: zpracovává ji fronta úloh . Chcete-li vynutit změnu kategorizace konkrétní stránky, otevřete ji pro úpravy a uložte ji beze změn.
  • Zajištění, že kód šablony nebude spuštěn při prohlížení samotné stránky šablony. Obvykle je to proto, že očekává parametry a jeho provedení bez parametrů má nežádoucí výsledek.

Všechno mimo <noinclude> a <includeonly> je zpracováno a zobrazeno normálně; to znamená, když se stránka šablony prohlíží přímo nebo když je šablona zahrnuta na jiné stránce. Důraz je kladen na to, co je uvnitř těchto dvou značek.

Všechno mimo <onlyinclude> tagy je při převodu vyřazeno. Dokonce i sekce označené pouze " includeonly" (včetně) jsou při převodu zahozeny, pokud nejsou označeny jako "onlyinclude" (pouze zahrnout). Důraz je kladen na to, co je mimo tuto značku.

Je také možné vnoření těchto značek.

Tři značky pro částečný přechod umožňují všechny možné kombinace toho, co je zpracováno a vykresleno. Komentáře také plní roli.

Organizování šablon

Aby byly šablony efektivní, uživatelé je musí jednoduše najít a zjistit, jak je správně používat.

Uživatelé je mohou najít:

  1. Klikněte na Speciální stránky > Všechny stránky
  2. V seznamu Jmenný prostor: zvolte Template a klikněte na Přejít.

Chcete-li poskytnout informace o způsobu použití, připojte na stránku šablony takovýto příklad:

<noinclude>
== Použití ==
Vítejte uživatelé:
{{Thankyou|reason=tvůj důvod|signature=tvůj podpis}}
</noinclude>

Poté může editor příklad použití šablony jednoduše zkopírovat a vložit.

Propojení na šablonu

Stránku šablony lze propojit s jakoukoli jinou stránkou wiki. Například odkaz Template:Navbar je generován pomocí wikicode {{ll|Template:Navbar|Template:Navbar}}.

Na mnoha wikis Template:Tl lze použít k vytvoření odkazu na šablonu formátovanou způsobem, který ukazuje wikicode "double curly-braces" nezbytný k převedení šablony bez skutečného provedení transkluse. Například kód {{tl|Navbar}} může být použit k vytvoření odkazu {{Navbar}}.

Tento způsob se běžně používá v dokumentaci šablon, na stránkách nápovědy a na diskusních stránkách při odkazování na šablony. Stejného efektu lze dosáhnout pomocí <code>{{[[Template:Navbar|Navbar]]}}</code>, ale {{tl}} přístup vyžaduje mnohem méně psaní. Na kterékoli dané wiki šablona Tl, pokud existuje, může nebo nemusí vykreslit text v elementu „code“, jak je znázorněno zde. Pokud tomu tak není, může tak učinit jiná podobně pojmenovaná šablona. Viz například část „Viz také“ v dokumentaci en:Template:Tl na anglické Wikipedii.

Kopírování z jedné wiki na druhou

Šablony často vyžadují CSS nebo jiné šablony, takže uživatelé mají často potíže s kopírováním šablon z jedné wiki na druhou. Následující kroky by měly fungovat pro většinu šablon.

MediaWiki kód

Pokud máte nová importní práva (konkrétně importupload):

  1. Přejděte na Special:Export na původní wiki a stáhněte soubor .xml s úplnou historií všech potřebných šablon, takto:
  2. * Do textového pole zadejte název šablony, např. "Šablona: Vítejte". Zvláštní pozornost věnujte malým a velkým písmenům a zvláštním znakům - pokud není název šablony přesně správný, může dojít k exportu, ale soubor XML nebude mít očekávaná data.
  3. * Zaškrtněte políčko "Zahrnout šablony".
  4. * Zrušte zaškrtnutí políčka "Zahrnout jen současnou verzi, ne plnou historii".
    • Klikněte na "Exportovat".
  5. Na nové wiki přejděte na Special: Import a nahrajte soubor .xml.

Pokud nemáte nová importní práva na novou wiki:

  1. Přejděte na šablonu, kterou chcete zkopírovat z původní wiki. Přejděte na stránku úprav a zkopírujte celý wikitext
  2. Na nové wiki přejděte na stránku se stejným názvem jaký má kopírovaná šablona. Stiskněte vytvořit a upravit a vložte wikitext, který jste zkopírovali. V souhrnu úprav každé šablony vytvořte odkaz na původní stránku pro přiřazení.
  3. V původní wiki v editačním okně pod editačním polem sledujte seznam „Šablony použité na této stránce“. Pro každou uvedenou šablonu postupujte podle těchto pokynů. Také to udělejte pro jakoukoli šablonu používanou kteroukoli z těchto šablon atd.

Tím se zkopíruje nezbytný celý kód a bude stačit pro některé šablony. Pokud to nefunguje, zkontrolujte také červené odkazy uvedené v části „Stránky přenesené na aktuální verzi této stránky:“ pod editačním polem. Pokud nějaké existují, opakujte výše uvedené kroky i pro ně a také zkopírujte kód do modulů..

Po úspěšném importu šablony a všech souvisejících šablon z druhé wiki šablonu upravte tak, aby vyhovovala vaší wiki. Chcete-li například změnit logo, odeberte nadbytečné kategorie nebo červené odkazy.

Rozšíření

Přípona často používaná v šablonách je ParserFunctions. Navštivte stránku Nápověda:Rozšíření:Funkce parseru a zkontrolujte, zda se ve zkopírovaných šablonách nepoužívají některé ze zde uvedených funkcí. Pokud ano, musíte nainstalovat rozšíření ParserFunctions . K jeho instalaci budete potřebovat systémový administrátorský přístup k serveru vaší instalace MediaWiki.

Další závislost, kterou lze použít v šablonách, zejména na Wikipedii, je Lua. Dobré je mít {{#invoke: }} v kódu šablony. V případě, že se používá, musíte nainstalovat rozšíření Scribunto . I zde je vyžadován přístup správce systému. Na této stránce naleznete další pokyny k instalaci a používání rozšíření.

CSS a kód JavaScript

Kromě kódu MediaWiki mnoho šablon využívá CSS a některé spoléhají na plné fungování JavaScriptu. Pokud se zkopírované šablony nebudou chovat podle očekávání, může to být příčinou. Chcete-li zkopírovat požadované CSS a JavaScript na svou wiki, obvykle budete potřebovat administrátorská oprávnění, protože budete upravovat systémové zprávy v oboru názvů „MediaWiki:“.

  1. Vyhledejte v textu šablony použití tříd CSS (text jako class="foobar"). Pokud se tyto třídy objeví v „MediaWiki:Common.css“ nebo „MediaWiki:Monobook.css“ na původní wiki, zkopírujte tyto třídy do „MediaWiki:Common.css“ na nové wiki a zkontrolujte, zda je šablona v pořádku.
  2. Jestliže zkopírovaná šablona stále nefunguje podle očekávání, zkontrolujte, zda se na původní wiki nachází kód „MediaWiki:Common.js“ nebo „MediaWiki:Monobook.js“. Pokud ano, můžete jej zkusit zkopírovat na „MediaWiki:Common.js“ na nové wiki. Obvykle je vhodné kopírovat kód pouze z důvěryhodných zdrojů a nejprve procházet kód, identifikovat a vybrat části, které jsou relevantní. Můžete najít komentáře, které mohou sloužit jako vodítka pro identifikaci funkčnosti každé části.

Viz též


Externí odkazy