DokuWiki

It's better when it's simple

Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

Übersetzungen dieser Seite?:

Erfahre mehr über DokuWiki

DokuWiki erweitern

Geschäftliche Nutzung

Unsere Community


Folge uns auf Facebook, Twitter und anderen Sozialen Netzwerken.

de:namespace_templates

Templates in Namensräumen (namespace templates)

Manchmal möchte man neuen Seiten in einem bestimmten Namensraum ein vorgegebenes Skelett geben.

Als Beispiel: In dem Namensraum address könnte man bei jeder neuen Seite eine vordefinierte Tabelle haben, welche nur noch mit Daten gefüllt werden muss.

Dies kann ganz einfach mit sogenannten „namespace templates“ erledigt werden.

Wenn eine neue Seite angelegt wird, schaut DokuWiki, ob eine Template-Datei existiert, und zeigt dieses im Editor an. Die Template-Dateien sind in Wiki-Sprache verfasst und als .txt Datei gespeichert.

Template-Dateien

Zwei Arten von Template-Dateien können benutzt werden:

  • _template.txt, welche im aktuellen Namespace benutzt werden.
  • __template.txt (zwei führende unterstriche), welche auch als normales _template.txt funktionieren, deren Inhalte allerdings auf alle untergeordneten Namensräume angewandt werden (Vererbung).

Ein Weg um eine Template-Datei zu erstellen:

  • Öffne eine normale Wikiseite im gewünschten Namespace und füge den Inhalt für das Template ein.
  • Öffne den Ordner mit FTP oder WebDAV und mache eine Kopie der Seite und benenne Sie wie oben beschrieben.
  • Benutze das Wiki, um den Template-Entwurf zu löschen.

Syntax

Der Inhalt der Datei ist normale Wiki Sprache.

Ersetzungsmuster

Innerhalb der Datei können auch einige Ersetzungsmuster benutzt werden, die das Template dynamischer gestalten.

@ID@ vollständige ID der Seite
@NS@ Namensraum der Seite
@CURNS@ ​ letztes Teilstück vom Namensraum der Seite
@PAGE@ Seitenname (ID ohne Namensraum; Unterstriche werden durch Leerzeichen ersetzt)
@!PAGE@ Das gleiche wie oben, der erste Buchstabe des ersten Wortes ist großgeschrieben
@!!PAGE@ Das gleiche wie oben, der erste Buchstabe von jedem Wort ist großgeschrieben
@!PAGE!@ Das gleiche wie oben, alle Buchstabe sind großgeschrieben
@FILE@ Seiten Name (ID ohne Namensraum, Unterstriche bleiben erhalten)
@!FILE@ Das gleiche wie oben, der erste Buchstabe des ersten Wortes ist großgeschrieben
@!FILE!@ Das gleiche wie oben, der erste Buchstabe von jedem Wort ist großgeschrieben
@USER@ Die ID des Benutzers der die Seite erstellt
@NAME@ Der Name des Benutzers, welcher die Seite erstellt
@MAIL@ Die E-Mail Adresse des Benutzers, welcher die Seite erstellt
@DATE@ Datum und Uhrzeit der Erstellung der neuen Seite

Es ist auch möglich strftime als Platzhalter zu verwenden, um die Zeit der Seitenerstellung in einem anderen Format einzufügen. Um das Zeichen % im Template zu benutzen, muss es doppelt notiert werden.

Template Bearbeitung

Die Datei _template.txt kann nicht aus DokuWiki heraus editiert werden – nur jemand mit Schreibrechten innerhalb der DokuWiki Ordnern (für gewöhnlich ein Administrator mit FTP oder WebDAV zugriff) kann die Templates ändern. Es gibt zwei Tricks um dies zu umgehen. Für einen muss ein symlink gesetzt werden, für den anderen ist es nötig den Code zu ändern.

Auf diese Weise können die Templates in einem speziellen Namensraum gespeichert werden.

Mit einem Symlink zu diesem Namensraum können diese Seiten als Template benutzt werden. Um das Template schreibgeschützt anzulegen ist die andere Variante besser geeignet.

  1. Erstelle einen Namensraum „templates“ oder ähnlich
  2. Erstelle in diesem Namensraum eine Seite für jedes Namensraumtemplate.
  3. Folge den Anweisungen oben, aber erstelle _template.txt als einen hardlink zu der erstellen Seite unter dem template Namensraum. Das Template kann nun einfach über das Wiki geändert werden.
Ich habe eine andere Methode benutzt: Erstelle eine template.txt welche ein symlink zu _template.txt, im eigenen Namensraum ist.
( cd /var/www/html/dokuwiki/data/pages/namespace/something ; ln -s _template.txt template.txt ).
Auf diese Art kann ich Templates editieren, in dem ich auf eine Seite in einem Namensraum gehe und den Seitennamen in der URL durch „template“ ersetze.
(z. B. http://www.mywiki.somewhere/dokuwiki/doku.php?id=namespace:something:template )

So können softlinks benutzt werden, nur ein wenig anders :)


Um Softlinks zu benutzen, ist es manchmal nötig die Option „FollowSymLinks“ auf den Verzeichnisbaum zu setzen.


Frei editierbare Templates für alle Benutzer

Bei dieser Methode sind alle Templates für jeden mit Schreibrechten editierbar.

Öffne die Datei inc/common.php und ändere den Standard-Template-Namen in der Nähe von Zeile 1056 + 1057 1) auf „template.txt“ (oder aaa_template.txt).

Beispiel:

/* Modifikation, damit man ein Template pro Namensraum definieren kann; 
   siehe https://www.dokuwiki.org/de:namespace_templates#frei_editierbare_templates_fuer_alle_benutzer
      if(file_exists($path.'/_template.txt')) {
         $data['tplfile'] = $path.'/_template.txt';
   wurde ersetzt durch: */
      if(file_exists($path.'/template.txt')) {
         $data['tplfile'] = $path.'/template.txt';
/* Ende der Modifikation */

Jetzt kann jeder Benutzer mit Schreibrechten in einem Namensraum eine Seite „template“ anlegen, die als Template benutzt wird.

  • Notiz: Diese Methode hat den Vorteil, dass neue Templates direkt genutzt werden. Dies ist bei den anderen Methoden nicht immer der Fall.

@GROUPS@ Unterstützung

Es mag interessant sein Unterstützung für das @GROUPS@ Keyword zu haben um die Gruppe des Benutzers, welcher die Seite erstellt zu berücksichtigen. Der folgende Patch impementiert dies.

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

Suggestions

  • Es ist eventuell sinnvoll den Standard Seitennamen in der Konfiguration zu setzen, um sich den Ärger bei einem Update zu ersparen. Der Zugang zu den Templates kann mit ACL eingeschränkt werden.
1)
Zeile 811 und 812 in Version 2009-02-14, Zeile 1050 und 1051 in Version 2017-02-19
de/namespace_templates.txt · Zuletzt geändert: 2017-09-21 12:56 von Juergen_aus_Zuendorf