DokuWiki

Je lepší, když je to jednoduché

Nástroje uživatele

Nástroje webu


namespace-templates

Šablony jmenných prostorů

https://www.dokuwiki.org/namespace_templates

DokuWiki podporuje scaffolding. Někdy můžete chtít, aby každá stránka v určitém jmenném prostoru vycházela ze společného základu. Například ve jmenném prostoru address můžete mít předem připravenou tabulku, kterou stačí jen vyplnit daty. Toho lze snadno dosáhnout pomocí tzv. „šablony jmenného prostoru“.

Když se vytvoří stránka, DokuWiki zjistí, zda existuje soubor šablony, a zobrazí ho v okně pro úpravy. Šablony jsou tedy .txt soubory a měly by obsahovat značkovací jazyk DokuWiki.

Soubory šablon

Lze použít dva typy souborů šablon:

  • _template.txt, který se použije v aktuálním jmenném prostoru (ale ne níže).
  • __template.txt (všimněte si dvou podtržítek na začátku), pokrývá aktuální jmenný prostor a všechny podřízené (tato šablona se tedy dědí).

Pokud jsou v jednom jmenném prostoru přítomny obě šablony (běžná i děděná), při vytváření nové stránky má přednost běžná _template.txt. To umožňuje odlišit stránky v hlavním jmenném prostoru od všech stránek v podřízených prostorech, což může být velmi užitečné.

POZNÁMKA: Jakékoli změny v souborech šablon ovlivní pouze nově vytvořené stránky, stávající stránky zůstanou nedotčeny.

Jedním ze způsobů, jak vytvořit soubor šablony, je:

  1. Pomocí wiki uložit stránku s obsahem, který chcete použít jako šablonu, do příslušného jmenného prostoru.
  2. Pomocí FTP nebo WebDAV soubor přejmenovat na _template.txt

pokud je to možné, upřednostněte použití pluginu TemplatePagename (viz vysvětlení níže).

Syntaxe

Obsah souboru je běžný značkovací jazyk wiki.

Nahrazovací vzory

Uvnitř souboru můžete použít některé nahrazovací vzory, které šablonu trochu zpřístupní.

@ID@ úplné ID stránky
@NS@ jmenný prostor stránky
@CURNS@ poslední část jmenného prostoru stránky
@!CURNS@ totéž jako výše, ale první znak je velké písmeno
@!!CURNS@ totéž jako výše, ale první znak každého slova je velké písmeno
@!CURNS!@ totéž jako výše, ale všechna písmena jsou velká
@PAGE@ název stránky (ID bez jmenného prostoru, podtržítka nahrazena mezerami)
@!PAGE@ totéž jako výše, ale první znak je velké písmeno
@!!PAGE@ totéž jako výše, ale první znak každého slova je velké písmeno
@!PAGE!@ totéž jako výše, ale všechna písmena jsou velká
@FILE@ název stránky (ID bez jmenného prostoru, podtržítka zůstávají)
@!FILE@ totéž jako výše, ale první znak je velké písmeno
@!FILE!@ totéž jako výše, ale všechna písmena jsou velká
@USER@ ID uživatele, který stránku vytváří
@NAME@ jméno uživatele, který stránku vytváří
@MAIL@ e-mailová adresa uživatele, který stránku vytváří
@DATE@ datum a čas zahájení editační relace
%a %d-%m-%y atd. např. Čt 06-12-12. strftime zástupné znaky nahrazeny časem vytvoření stránky
%% v šabloně se objeví doslovný znak %

Úpravy šablon přes wiki

Soubor _template.txt nelze upravovat přes DokuWiki (pouze někdo, kdo má přístup k souborům v systému souborů – obvykle administrátor přes FTP nebo WebDAV – může tyto soubory upravovat). Existují však tři způsoby, jak to obejít:

  • nejjednodušší je použít plugin plugin:TemplatePagename, který umožňuje změnit výchozí názvy šablon _template a __template na jiný název, např. c_template a i_template. Tyto soubory jsou považovány za běžné wiki stránky, protože nezačínají podtržítkem.
  • nebo nastavením pomocí symbolických odkazů

Upravitelné šablony pomocí symbolických odkazů

POZNÁMKA: Tato část obsahuje instrukce pro použití na Linux serveru a nebude fungovat na systému Windows.

Tímto způsobem můžete uložit šablony do speciálního jmenného prostoru a vytvořit symbolické odkazy, aby je DokuWiki našla. Můžete také zvolit, že konkrétní šablona nebude upravitelná tím, že odstraníte její konkrétní symlink.

  1. Vytvořte jmenný prostor s názvem „templates“ nebo podobně.
  2. V tomto prostoru vytvořte stránku pro každou šablonu jmenného prostoru, kterou chcete upravovat.
  3. Postupujte podle výše uvedených instrukcí, ale vytvořte z _template.txt pevný odkaz 1) na správnou stránku ve vašem jmenném prostoru šablon. Nyní máte šablonu, kterou lze snadno upravovat přes wiki rozhraní.

Další možností je vytvořit symbolické odkazy přímo ve složce. Vytvoříte tedy template.txt, což je symbolický odkaz na _template.txt ve vlastním jmenném prostoru.

cd /var/www/html/dokuwiki/data/pages/namespace/something
ln -s _template.txt template.txt

Aby tyto měkké odkazy (softlinky) fungovaly, může být nutné nastavit volbu FollowSymLinks pro tento adresář v konfiguraci vašeho webového serveru.

POZNÁMKA: Tato část obsahuje instrukce pro použití na Windows serveru a nebude fungovat na Linux systému.

Otevřete příkazový řádek (cmd.exe) na serveru a přejděte do umístění, kde chcete mít šablonu. Použijte příkaz MKLINK pro vytvoření symbolického odkazu.

cd c:\inetpub\wiki\data\pages\namespace\something
mklink template.txt _template.txt

Pluginy

Další funkce šablon jsou implementovány pomocí pluginů.

  • Plugin plugin:TemplatePagename umožňuje změnit názvy _template a __template dle vašeho výběru přes konfiguračního správce. Výchozí názvy jsou c_template a i_template. Tento plugin umožňuje používat běžné wiki stránky jako šablony, takže jsou upravitelné přes wiki rozhraní.
  • Plugin plugin:TemplateByName rozšiřuje dostupné šablony o:
    • ~yourpagename.txt pro stránku s názvem yourpagename v aktuálním jmenném prostoru;
    • ~yournamespace.txt pro všechny stránky v podjmenném prostoru yournamespace;
    • a varianty pro hlubší jmenné prostory a další šablony např. pro start stránky.

Všechny tyto pluginy jsou upravitelné pouze přes souborový systém.

  • Plugin plugin:NewPageTemplate přidává URL parametr, který určuje, která existující stránka z wiki se načte jako šablona. Dostupná je každá stránka povolená ACL.
  • Plugin plugin:Snippets přidává tlačítko do panelu nástrojů editoru, které umožňuje snadné vložení šablon při úpravě stránky. Zobrazované šablony musí být uvedeny na jedné stránce, výchozí je snippets.
  • Plugin plugin:Headerfooter přidává text záhlaví nebo zápatí na stránky pouze tehdy, když jsou zobrazeny.

Řešení problémů

Problém: Dojde k neočekávané chybě „no timestamp“, když server (Linux Ubuntu) nemůže zapisovat do adresáře /dokuwiki/data/pages/namespace. To se může stát, pokud adresář jmenného prostoru vytvoří administrátor jako <root>, aby mohl umístit soubor šablony jmenného prostoru do /dokuwiki/data/pages/namespace/, ještě před vytvořením první stránky.

1. Řešení: Než vytvoříte skrytý soubor šablony, nejprve vytvořte pomocnou stránku pomocí grafického rozhraní DokuWiki, například: yourserver/doku.php?id=namespace:dummy&do=edit Tím umožníte DokuWiki vytvořit adresář jmenného prostoru pod vlastní správou a zajistíte DokuWiki plná práva zápisu do vytvořeného adresáře.

2. Řešení: Administrátor <root> by měl být schopen změnit nastavení vlastníka a skupiny pomocí příkazu chown (např. chown www-data:www-data /dokuwiki/data/pages/namespace/ v CLI2)) a v první řadě by měl vytvořit nové adresáře a soubory s nastavením vlastník:skupina (owner:group) platným pro instalaci DokuWiki.

1)
Měkké odkazy zřejmě nefungují, viz poznámka o FollowSymLinks níže.
2)
Command Line Interface
namespace-templates.txt • Poslední změna: (upraveno správcem (MartinR) mimo DokuWiki)

Pokud není uvedeno jinak, je obsah této wiki dostupný pod licencí:
CC-BY-SA • Uveďte původ - Zachovejte licenci 4.0 Mezinárodní
CC-BY-SA • Uveďte původ - Zachovejte licenci 4.0 Mezinárodní Darovat Běží na PHP Validátor HTML5 Validátor CSS Běží na DokuWiki

Našli jste na stránce chybu, nebo překlep?
Budu vděčný za upozornění.
Děkuji

Nahoru