DokuWiki

It's better when it's simple

Gebruikershulpmiddelen

Site-hulpmiddelen


nl:namespace_templates

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

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.

  1. Maak een namespace genaamd “templates”, of iets vergelijkbaars
  2. In deze namespace, maak je voor elke Namespace Template die je wenst een pagina
  3. 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.

  1. Wijzig de standaard templatenaam naar “template.txt” (of iets anders bijvoorbeeld aaa_template.txt) rond regel 817 in inc/common.php 3).
  2. 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 genaamd yourpagename in de huidige namespace
    • ~yournamespace.txt voor alle pagina's in de subnamespace genaamd yournamespace
    • 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 respectievelijk c_template en i_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

1)
Deze wijzigingen zijn alleen van toepassing op nieuwe pagina's die je in de namespace hebt gemaakt.
2)
zachte links lijken niet te werken, maar zie de opmerking over FollowSymLinks hieronder
3)
Regels 811 en 812 in versie 2009-02-14
nl/namespace_templates.txt · Laatst gewijzigd: 2013-01-16 01:25 door Klap-in

Tenzij anders vermeld valt de inhoud van deze wiki onder de volgende licentie: CC Attribution-Share Alike 4.0 International
CC Attribution-Share Alike 4.0 International Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki