transkluze

Z thewoodcraft.org
Verze z 12. 7. 2024, 13:41, kterou vytvořil Keny (diskuse | příspěvky) (→‎Speciální stránky a funkce)
(rozdíl) ← Starší verze | zobrazit aktuální verzi (rozdíl) | Novější verze → (rozdíl)

"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.
PříkladNeparametrizovaná funkce {{FULLPAGENAME}} na téhle stránce vrací řetězec transkluze. Ale pokud jí přidáme parametr, ve kterém bude použita funkce REVISIONUSER, 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 funkce FULLPAGENAME. Takže kód {{FULLPAGENAME:User:{{REVISIONUSER}}}} vrátí lokalizovanou variantu Už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


  1. Například dynamicky generované seznamy s odkazy na stránky v rámci kategorií.
  2. Pokud to není v souboru LocalSettings.php proměnnou $wgAllowSpecialInclusion explicitně zakázáno.
  3. 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 ...