transkluze
"Transkluze" je proces, při které se kód stránky zahrne do kódu stránky jiné, tím že se zavolá prostřednictvím odkazu. V kontextu wiki to znamená, že lze úpravou kódu šablony, vytvořené v rámci MediaWiki a natahované do wiki kódu mnoha dalších stránek, měnit jejich obsah, aniž by bylo nutné každou z nich editovat zvlášť.
Pro parser je předmětem transkluze obsah dvojitých složených závorek "{{}}"
Není-li řečeno jinak, předpokládá že jde o název stránky ze jmenného prostoru Šablona, ale může to být libovolná stránka wiki, pokud uvedeme i název jmenného prostoru, systémová proměnná, obsah generovaný parsovacími funkcemi, výstup některých speciálních stránek, obsah stránek interwiki aj.
Syntaxe kódu na cílové stránce
Aby mohlo dojít k transkluzi stránky, je třeba ve složených závorkách uvést nejenom název stránky, ale také příslušný jmenný prostor oddělený dvojtečkou:
Nápověda:Transclusion
Jmenný prostor a dvojtečku lze vynechat pouze při transkluzi stránky ze jmenného prostoru šablona:
Šablona:infobox
Při transkluzi stránky z hlavního jmenného prostoru se jméno jmenného prostoru neuvádí:
Transclusion
Pokud provádíte transkluzi podstránky cílové stránky, stačí uvést za lomítkem pouze název podstránky:
Šablona:/doc
Parametrizace při transkluzi, při použití funkce a speciální stránky
Proces transkluze může být parametrizován. Oddělovačem parametrů, které parser postupně při transkluzi zpracuje, je svislítko (známé v unixovém prostředí též jako roura) |
.
Parametry lze pojmenovat. Nepojmenované, poziční parametry se počítají od nuly. Šablony, kde použijete {{{0}}}
, budou pracovat s názvy stránek, do kterých budou vloženy.
Při transkluzi lze použít:
- Interní parsovací funkce MediaWiki
- Výsledek zpracování funkce obvykle vrací řetězcovou hodnotu, která se už dál dynamicky nemění a je svým způsobem konstantní.
- Následuje-li za názvem funkce dvojtečka
:
, zpracuje parser následující řetězec jako wikikód a výsledný řetězec předá funkci, která z něj vytáhne vlastní parametry. Jak, to si ukážeme na příkladu. - Neparametrizovaná funkce
{{FULLPAGENAME}}
na téhle stránce vrací řetězectranskluze
. Ale pokud jí přidáme parametr, ve kterém bude použita funkceREVISIONUSER
, zpracuje nejprve tuhle funkci a její výsledek, ve spojení s angl. názvem jmenného prostoru ve kterém se nalézají uživatelské stránky (User
), převezme jako svůj parametr funkceFULLPAGENAME
. Takže kód{{FULLPAGENAME:User:{{REVISIONUSER}}}}
vrátí lokalizovanou variantuUživatel:Keny
.
- Funkce rozšíření
- Se od interních parsovacích funkcí liší tím, že mají před svým názvem znak
#
, jinak se parametrizují stejným způsobem. - Název šablony
- Jedině stránky ze jmenného prostoru číslo 10 (Šablona – angl. Template) se volají při transkluzi bez uvedení jmenného prostoru.
- Název stránky včetně jmenného prostoru ve kterém se nachází
- Je od názvu jmenného prostoru ve oddělen dvojtečkou
:
. Pokud název jmenného prostoru před dvojtečkou chybí, automaticky se předpokládá, že se má provést transkluze stránky z hlavního jmenného prostoru číslo 0 (NS_MAIN
), který žádné jméno nemá. Jsou ovšem jmenné prostory a stránky, s obsahem, který se takovým způsobem vložit nedá.[1] - Speciální stránka
- Předmětem transkluze mohou být i některé speciální stránky[2], pokud jsou dostupné i pro anonymní návštěvníky wiki.
- U stránky co není z nějakého důvodu uživateli dostupná ke transkluzi nedojde a místo kódu který by měla vracet se zobrazí jen neplatný (červeně zbarvený) odkaz.
- Speciální stránky, včetně těch co podporují transkluzi[3], se dají také parametrizovat. Většinou akceptují jeden až dva parametry. Ty jsou od názvu speciální stránky odděleny lomítkem
/
, takže výsledný řetězec vypadá jako by šlo o podstránky, což může být pro někoho matoucí.
Odkazy a poznámky pod čarou
https://www.mediawiki.org/wiki/Transclusion/cs
https://www.mediawiki.org/wiki/Help:Transclusion/cs
- ↑ Například dynamicky generované seznamy s odkazy na stránky v rámci kategorií.
- ↑
Pokud to není v souboru
LocalSettings.php
proměnnou$wgAllowSpecialInclusion
explicitně zakázáno. - ↑
U těch, co transkluzi nepodporují se místo výsledku zobrazí vygenerovaný parametrizovaný odkaz, který lze dále parametrizovat pomocí interních funkcí, které do URL doplní chybějící atributy. Např.
canonicalurl
nebo ...