Inhoud
Namespace Templates
Soms wil je dat elke pagina in een bepaalde namespace wordt gebaseerd op een standaard patroon. Bijvoorbeeld, in de adres
namespace kun je al een tabel voorbereiden, welke allen nog gevuld hoeft te worden met data. Dit kan makkelijk worden bereikt met zogenaamde “namespace templates”.
Als een pagina wordt gemaakt, kijkt DokuWiki of er een templatebestand bestaan en geeft dit weer in het bewerkvenster. De templates daarvoor zijn .txt-bestanden en gebruiken wiki opmaakcodes.
Templatebestanden
Twee soorten van templatebestanden kunnen worden gebruikt:
_template.txt
, dit wordt gebruikt in de huidige namespace.__template.txt
(begint met twee lagestrepen), dit wordt gebruikt als normale_template.txt
-bestanden, maar ook wordt deze in alle ondergelegen namespaces gebruikt (het wordt overgeërfd).
Een manier om een templatebestand te maken is
- de wiki gebruiken om een pagina op te slaan met de gewenste inhoud in de beoogde namespace
- gebruik de FTP of WebDAV om een kopie te maken in dezelfde map en te hernoemen, dan
- gebruik de wik om de originele pagina te verwijderen.1)
Syntax
De inhoud van het bestand is standaard wikiopmaak.
Vervangpatronen
In het bestand kun je een aantal patronen gebruiken die vervangen kunnen worden om de template wat dynamischer te maken.
@ID@ | volledig ID van de pagina |
---|---|
@NS@ | namespace van de pagina |
@PAGE@ | paginanaam (ID zonder namespace en lagestrepen vervangen door spaties) |
@!PAGE@ | zelfde als bovenstaande, maar met het eerste teken een hoofdletterd |
@!!PAGE@ | zelfde als bovenstaande, maar met alle eerste tekens van woorden een hoofdletter |
@!PAGE!@ | zelfde als bovenstaande, maar met alle tekens in hoofdletters |
@FILE@ | paginanaam (ID zonder namespace, lagestrepen worden behouden) |
@!FILE@ | zelfde als bovenstaande, maar met het eerste teken een hoofdletter |
@!FILE!@ | zelfde als bovenstaande, maar met alle tekens in hoofdletters |
@USER@ | ID van de gebruiker die de pagina aanmaakt |
@NAME@ | naam van de gebruiker die de pagina aanmaakt |
@MAIL@ | e-mailadres van de gebruiker die de pagina aanmaakt |
@DATE@ | datum en tijd van de starttijd van je bewerksessie |
%a %d-%m-%y etc. | e.g. Thu 06-12-12. Strftime placeholders are replaced by page creation time |
%% | a literal % character appears in your template |
In aanvulling hier op kun je ook een strftime placeholder in de tekst plaatsen om de tijd van pagina aanmaken in te voegen in elk gewenst formaat. Als je een letterlijk %
-teken in je template wilt moet je die verdubbelen.
Aanpassen templates
Je kunt de _template.txt
niet aanpassen via DokuWiki – alleen iemand met toegang tot de bestanden (meestal een beheer via FTP of WebDAV) kan dit. Er zijn drie alternatieve methodes om dit toch mogelijk te maken:
- door symbolische links te maken naar de bestanden,
- door de code aan te passen
- of het simpelst door een plugin te gebruiken die dit gedrag aanpast
Templates wijzigen via symbolische links
Op deze manier kun je jouw templates in een speciale namespace bewaren. Door er een symlink naartoe te maken kun je ze gebruiken als template. Je kunt ook kiezen om een template niet-bewerkbaar te maken door geen symlink te maken.
- Maak een namespace genaamd “templates”, of iets vergelijkbaars
- In deze namespace, maak je voor elke Namespace Template die je wenst een pagina
- Volg de instructies die hierboven staan, maar maak van _template.txt een hardlink 2) naar de juiste pagina in je template namespace. Je hebt nu een template die makkelijk aangepast kan worden via de wiki-interface.
Een andere manier is om symlinks te maken in de folder zelf. Dus je maakt een template.txt
wat een symbolische link is naar _template.txt
in de eigen namespace.
cd /var/www/html/dokuwiki/data/pages/namespace/something ln -s _template.txt template.txt
Voordat deze softlinks werken is het eventueel nodig om op de webserver de FollowSymLinks aan te zetten op de map(structuur).
Bewerkbare templates voor alle gebruikers
Met deze methode worden al je templates bewerkbaar voor iedereen met schrijfrechten. Het past in de broncode de bestandsnamen aan waar naar gezocht wordt.
- Wijzig de standaard templatenaam naar “template.txt” (of iets anders bijvoorbeeld aaa_template.txt) rond regel 817 in
inc/common.php
3). - Nu kan elke gebruiker met schrijfrechten in die namespace een pagina maken met de naam “template” die in namespace meteen dient als template voor nieuwe pagina's.
- Opmerking: Deze methode heeft als voordeel dat de nieuwe templates onmiddellijk worden herkend. Dit is niet het geval bij de andere methodes (die handmatig bestanden of symlinks in DokuWiki mappen toevoegen)
Plugins
Extra template functies zijn geïmplementeerd met plugins:
- TemplateByName Plugin breidt het aantal beschikbare templates uit met
~yourpagename.txt
voor de pagina genaamdyourpagename
in de huidige namespace~yournamespace.txt
voor alle pagina's in de subnamespace genaamdyournamespace
- en ook varianten voor diepere namespaces en enkele andere templates e.g. voor
start
pagina's.
- NewPageTemplate Plugin voegt een url parameter toe die definieert welke bestaande pagina van de wiki als template moet worden geladen. Elke pagina is toegestaan als die via ACL beschikbaar is.
- TemplatePagename Plugin kan de namen aanpassen van
_template
and__template
in je eigen keuze via de configuratiebeheerder. Heeft standaard respectievelijkc_template
eni_template
.
- Snippets Plugin toevoegt een knop toe aan de bewerkbalk van het tekstbewerkvenster die toestaat om makkelijk templates in te voegen bij het bewerken van een pagina. De getoonde templates moeten zijn opgesomd op één pagina, standaard genaamd
snippets
.
Enkele van deze plugins conflicteren.
@GROUPS@ ondersteuning
Het kan interessant zijn om een extra vervangpatroon toe te voegen, de @GROUPS@
variabele die vervangen wordt door de lijst van groepen van de gebruiker bij het maken van de pagina (bijvoorbeeld om een set van tags te specificeren op de gebruikers-pagina). De volgende patch implementeert het.
Index: dokuwiki-2009-02-14/inc/common.php =================================================================== --- dokuwiki-2009-02-14.orig/inc/common.php 2009-11-19 11:58:41.000000000 +0100 +++ dokuwiki-2009-02-14/inc/common.php 2010-01-05 10:17:35.000000000 +0100 @@ -840,6 +840,7 @@ '@USER@', '@NAME@', '@MAIL@', + '@GROUPS@', '@DATE@', ), array( @@ -855,6 +856,7 @@ $_SERVER['REMOTE_USER'], $INFO['userinfo']['name'], $INFO['userinfo']['mail'], + implode(" ", $INFO['userinfo']['grps']), $conf['dformat'], ), $tpl);
— Olivier Mehani 2010/01/05 10:19