Help:Templates/cs

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í a mediálních souborů zde není žádné centrální úložiště šablon. Šablony mohou být nově napsány nebo pro uložení již provedené duplicitní práce exportovány z jiné wiki např. Wikipedie a poté importovány do cílové wiki.

Vytvoření
Šablony jsou standardní wiki stránky, jejichž obsah je navržen tak, aby byl transkludován (vložen) do jiných stránek. Šablony se řídí konvencí, že název má předponu " " a přiřazuje jej k tomuto jmennému prostoru. Kromě toho je můžete vytvořit jako kteroukoli jinou wiki stránku.

Nejjednodušší použití šablon je následující. Pokud vytvoříte stránku s názvem "Template:Welcome" s obsahem:

Ahoj! Vítejte na wiki.

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

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

Kód  můžete vložit na kterékoli místo jaké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 již 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:


 * - 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.
 * - 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.
 * - 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:Help:Substitution.
 * - obsahuje šablonu ve formě, která ji zobrazuje jako nezpracovanou wiki syntaxi (způsobem ), když je načtena stránka, která ji obsahuje.

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:


 * zahrnuje
 * zahrnuje
 * zahrnuje
 * se nahrazuje obsahem

Pokud takový jmenný prostor neexistuje, považuje se celý název za šablonu:


 * zahrnuje

Parametry
Pro obohacení mechanismu transkluze umožňuje MediaWiki předat parametry šabloně, když je transkludována. Parametry umožňují šabloně vytvářet různý obsah nebo mít 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:

Jako první parametr šablony bude uvedeno zač je děkováno (v tomto případě "vaše úsilí") a jako druhý jméno děkujícího (např. "Tonda"). Vaším cílem je, aby kterýkoli uživatel mohl tímto způsobem za něco poděkovat jinému uživateli, kupř. v rámci diskuze.

Šablonu, například s názvem, použijete proto aby tahle poznámka vypadala všude tam kde se použije stejně. I když bude vypadat každé poděkování podobně, jeho obsah (tj. důvod a podpis) se bude lišit vždy, pokud ji použije k poděkování někdo jiný, někomu jinému, za něco jiného. A to je obsah, který se bude předávat přes parametry. Zapomeňme pro tuto chvíli na ostatní prvky, které ovlivňují podobu rámečku a umístění obrázku. Z hlediska obsahu šablony, je rozhodující následující obsah:

Všimněte si použití  a. Tak se do šablony vloží parametry předané při použití šablony. Identifikátory parametrů jsou uzavřeny do ztrojených složených závorek:. To zajistí, že se nebudou interpretovat jako názvy šablony.

Když se šablona používá na stránce, oddělují se parametry znakem "svislítko". MediaWiki identifikuje parametry předané šabloně třemi způsoby: podle pozice, čísla, nebo jména.

Nepojmenované, poziční parametry
Pokud parametry předané šabloně nepojmenujete, bude rozhodující jejich pořadí:

V tomto případě se šabloně  předají dva poziční parametry   a  :

Pořadí, ve kterém jsou parametry uvedeny, je pro jejich zpracování důležité. Podívejme se, jak bude vypadat výsledek zpracování, pokud uvedeme tyto parametry v obráceném pořadí:

a tohle je výsledek:

Číslované parametry
Předávané parametry lze identifikovat podle čísla už při jejich předání:

Tentokrát jsou šabloně  předané dva očíslované parametry   a. A přestože byly v šabloně uvedené v obráceném pořadí,jsou zpracované takto:

zobrazí se
 * Příklad:

Pojmenované parametry
Místo čísel můžete použít jako identifikátory i textové řetězce. V tomto případě by se obsah šablony změnil na:

Děkuji... za. kdo,

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

V tomto případě šablona  přijímá parametry   a   a vytvoří:

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

zobrazí:

Výhodou použití pojmenovaných parametrů ve vaší šabloně, kromě toho, že lze předat parametry v zadání, je to, že kód šablony je mnohem snáze pochopitelný, při existenci mnoha parametrů.

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

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

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:

pak  definuje, že pokud není poskytnut žádný argument pro parametr , pak bude použita hodnota. Podobně, výchozí parametr   má hodnotu. Výsledkem opětovného převedení šablony bez předání argumentu je následující:

Often default values are used to specify alternate names of parameters. For example, if you have, 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
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  containing , and a   containing  , and put   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, and Template:Foo does not contain  , 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  magic word that varies by user language.

Template calls starting with the magic word  or   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 je 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, zobrazí se "a a Template loop detected:  Template:Aaaa z z".

Forbidden idiom
This safeguard precludes a potentially useful template idiom where a template self-normalizes its own calling arguments. In this forbidden example template:d can either be called  or. If called in the first manner, it recurses into itself with the second argument structure (obtained using string parser functions), which then follows a unified processing path.



If template:d is modified to recurse into template:d/2 and template:d/2 is an identical manual copy of template:d this idiom works fine as the self-recursion safeguard operates dynamically and not statically.

A feasible way for the MediaWiki software to loosen the self-recursion rule would be to require that each recursive call have a distinct argument count from all previous active calls, at most once recursing with the argument count non-decreasing. That would provide a strong guarantee against infinite self-recursion while enabling useful idioms such as the one described here in a flexible manner.

If the processing path is of low complexity, a simple solution using only one template is to handle each calling convention on a separate if/else branch, duplicating the logic of the processing path within each case. If the processing path is more complex, each call-structure case can delegate to an implementation template with a unified call structure which provides the final template behaviour.

Tables in parameters
Since the syntax for wikitables involves pipes in single braces ({ }) and using the pipe trick will not work in transclusion parameters, one will have to create a table as a separate page and transclude it from there.

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, pomocí značek, a , které části šablony se budou zobrazovat a zahrnovat.

Všechno mezi a  bude vidět pouze tehdy, když se stránka šablony prohlíží přímo, ale ne, když je zahrnuta do jiné stránky. 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 a  zpracováno a zobrazeno pouze při zahrnutí stránky, ale ne při přímém prohlížení stránky šablony. To je užitečné v situacích, jako například:


 * Kategorizace stránek obsahujících š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 . 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 provedení bez parametrů má nežádoucí výsledek.

Všechno mimo a  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 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 (zahrnout pouze). 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. Roli plní i komentáře.

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 ' > '
 * 2) V seznamu ' zvolte Template a klikněte na '.

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

Použití
Uživatelé vítejte:

Redaktor potom podobnou stránku vytvoří tak, že příklad jednoduše zkopíruje.

Propojení na šablonu
Stránku šablony lze propojit s jakoukoli jinou stránkou wiki. Například odkaz je generován pomocí wikicode.

Na mnoha wikinách 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í převodu. Například kód  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 použitím, ale použití tl vyžaduje o dost méně psaní. Na jakékoli dané wiki šabloně Tl, pokud existuje, se může nebo nemusí vykreslit text v prvku "code", jak je znázorněno zde. Pokud ne, může tak učinit jiná podobně pojmenovaná šablona. Viz například část "Viz také" dokumentace en:Template:Tl na anglické Wikipedii.

Kopírování z jedné wiki do druhé
Š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 do druhé. Následující kroky by měly fungovat pro většinu šablon.

MediaWiki code
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ř. "emplate:Welcome". 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 "".
 * 4) * Zrušte zaškrtnutí políčka "".
 * 5) * Klikněte na "".
 * 6) 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 "Templates used on this page" (šablony použité na této stránce). Pro každou uvedenou šablonu postupujte podle těchto pokynů. Totéž udělejte pro jakoukoli šablonu používanou kteroukoli z těchto šablon atd.

Tím se zkopíruje celý nezbytný kód a bude stačit pro některé šablony. Všimněte si, že se exportují pouze prvky stránky analyzované při vykreslování stránky, takže například podstránky dokumentace nejsou exportovány jako součást tohoto procesu. Pokud to nefunguje, zkontrolujte také červené odkazy uvedené v části "Pages transcluded onto the current version of this page:" (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 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í. 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 (programovací jazyk). Dobré je mít   v kódu šablony. V případě, že se používá, musíte nainstalovat rozšíření. 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 zde být příčina. 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 ve jmenném prostoru "MediaWiki:".


 * 1) Vyhledejte v textu šablony použití tříd CSS (text jako  ). 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.

Související stránky

 * w:Help:Table - nejjednodušší návod k použití.
 * – příklad zvláštního použití šablony
 * – fantastické věci, které najdete v některých šablonách
 * – další ozdobné ovládací funkce, jako je #if a #switch
 * – návod k používání funkcí syntaktického analyzátoru v šablonách
 * m:Nápověda:Šablona — obsahuje mnohem důkladnější příručku o tom, jak přesně šablony fungují
 * m:Nápověda:Pokročilé šablony — popisuje ještě pokročilejší techniky, jako jsou dynamická volání šablon a názvy proměnných parametrů
 * m:Nápověda:Vložit stránku — vkládání stránek ze jmenných prostorů jiných než.
 * – Using templates as the starting text of a page
 * – Using templates as the starting text of a page
 * – Using templates as the starting text of a page
 * – Using templates as the starting text of a page
 * – Using templates as the starting text of a page

Externí odkazy

 * Úložiště šablon Miraheze - Šablony MediaWiki určené ke všeobecnému použití.