DokuWiki

It's better when it's simple

Benutzer-Werkzeuge

Webseiten-Werkzeuge


de:namespace_templates

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
de:namespace_templates [2009-06-14 01:01]
ach removed
de:namespace_templates [2017-09-21 12:56]
Juergen_aus_Zuendorf [Ersetzungsmuster]
Zeile 1: Zeile 1:
-====== ​Namespace ​Templates ======+====== Templates ​in Namensräumen (namespace templates)======
  
-Sometime you might want to have every page in a certain namespace based on a common skeleton. For example, in the ''​address''​ namespace you could have an already prepared table, which only needs to be filled with data. This can be easily achieved with so called "​namespace templates"​+Manchmal möchte man neuen Seiten ​in einem bestimmten Namensraum ein vorgegebenes Skelett geben 
  
-When a page is created[[DokuWiki]] looks up whether a template files exists and it shows it within the editor window. The templates therefore are .txt files and should contain wiki markup.+Als Beispiel: In dem Namensraum ''​address''​ könnte man bei jeder neuen Seite eine vordefinierte Tabelle habenwelche nur noch mit Daten gefüllt werden muss.
  
-===== Template files ===== +Dies kann ganz einfach mit sogenannten "​namespace templates"​ erledigt werden. ​
-Two kind of template files can be used :+
  
-  * ''​_template.txt''​ which is used in the current namespace. +Wenn eine neue Seite angelegt wird, schaut [[DokuWiki]],​ ob eine Template-Datei existiert, und zeigt dieses im Editor anDie Template-Dateien sind in Wiki-Sprache verfasst und als .txt Datei gespeichert.
-  * and ''​%%__%%template.txt''​ (two leading underscores) which just work as the normal ''​_template.txt''​ files apart from the fact it is used in all namespaces below as well (They are inherited).+
  
-One way to create the template file is to 
  
-  ​use the wiki to save a page with the content that you want to use as a template ​into the appropriate namespace +===== Template-Dateien ===== 
-  * use FTP or WebDAV ​to make a copy of it in the same folder and rename it, then +Zwei Arten von Template-Dateien können benutzt werden: 
-  * use the wiki to delete the original page.+ 
 +  * ''​_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 ===== ===== Syntax =====
-The content of the file is just standard ​[[wiki:​syntax|wiki markup]].+Der Inhalt der Datei ist normale ​[[de:wiki:​syntax|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 [[phpfn>​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. 
 + 
 + 
 +==== Template Bearbeitung mit Symlinks==== 
 + 
 +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. 
 +  
 +  - Erstelle einen Namensraum "​templates"​ oder ähnlich 
 +  - Erstelle in diesem Namensraum eine Seite für jedes Namensraumtemplate. 
 +  - 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.
  
-==== Replacement patterns ==== +Öffne die Datei ''​inc/​common.php''​ und ändere den Standard-Template-Namen in der Nähe von Zeile 1056 + 1057 ((Zeile 811 und 812 in Version 2009-02-14Zeile 1050 und 1051 in Version 2017-02-19)) auf "template.txt" (oder aaa_template.txt).
-Inside of the fileyou may also use some replacement patterns to make the template ​a little more dynamic.+
  
-^ @ID@     | full ID of the page                                                                    | +//​Beispiel://​\\ 
-^ @NS@     | namespace of the page                                                                  | +<file php> 
-^ @PAGE@ ​  ​| page name (ID without namespace and underscores replaced by spaces                   | +/* Modifikation,​ damit man ein Template pro Namensraum definieren kann;  
-^ @!PAGE@ ​ | same as above but with the first character uppercased ​[[devel:​develonly]]              | +   siehe https://​www.dokuwiki.org/​de:​namespace_templates#​frei_editierbare_templates_fuer_alle_benutzer 
-^ @!!PAGE@ | same as above but with the first character of all words uppercased [[devel:develonly]] | +      if(file_exists($path.'/​_template.txt'​)) { 
-^ @!PAGE!@ | same as above but with all characters uppercased [[devel:​develonly]] ​                  | +         $data['​tplfile'​= $path.'/​_template.txt';​ 
-^ @FILE@ ​  | page name (ID without namespace, underscores kept as is[[devel:​develonly]] ​          | +   wurde ersetzt durch*/ 
-^ @!FILE@ ​ | same as above but with the first character uppercased ​[[devel:​develonly]]              | +      ​if(file_exists($path.'/​template.txt'​)) { 
-^ @!FILE!@ | same as above but with all characters uppercased [[devel:​develonly]] ​                  | +         $data['​tplfile'​= $path.'/​template.txt';​ 
-^ @USER@ ​  | ID of user who is creating the page                                                    | +/* Ende der Modifikation */ 
-^ @NAME@ ​  | name of user who is creating the page                                                  | +</​file>​
-^ @MAIL@ ​  | mail address of user who is creating the page                                          | +
-^ @DATE@ ​  | date and time when edit session started ​                                               |+
  
-In addition you may also use any [[phpfn>​strftime]] placeholder to insert the time of page creation ​in any format you like. If you want to use a literal ''​%''​ character in your template ​you need to double it.+Jetzt kann jeder Benutzer mit Schreibrechten ​in einem Namensraum eine Seite  "template" anlegen, die als Template benutzt wird
  
-===== Editing templates =====+  * //Notiz:// Diese Methode hat den Vorteil, dass neue Templates direkt genutzt werden. Dies ist bei den anderen Methoden nicht immer der Fall.
  
-You can't edit the ''​_template.txt'' through DokuWiki -- only someone who can edit the files inside the DokuWiki folders (usually an administrator using FTP or WebDAV) canThere are two tricks to accomplish this, though: one involving setting up symbolic links once, and one involving a code change.+==== @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ücksichtigenDer folgende Patch impementiert dies
  
-==== Editable templates through symbolic links ====+<code unidiff>​ 
 +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); 
 + 
  
-This way, you can store your templates in a special namespace. By making a symlink to them you can use the template. You can also choose to make a template non-editable by not using a symlink.+</​code>​
  
-  - Create a namespace called "​templates",​ or something similar. + --- //[[shtrom-doku@ssji.net|Olivier Mehani]] 2010/01/05 10:19//
-  ​- ​In this namespace, create a page for each [[:​namespace_templates ​Namespace Template]] that you wish to be available. +
-  - Follow the instructions given in the [[:namespace_templates | manual]], but make _template.txt a symlink to the correct page under your templates namespace. ​ You now have a template that can be modified easily via the wiki interface.+
  
-==== Editable templates for all users  ​====+====== Suggestions ======
  
-This wayall your templates will be editable by anybody with write access.+  * Es ist eventuell sinnvoll den Standard Seitennamen in der Konfiguration zu setzenum sich den Ärger bei einem Update zu ersparen. Der Zugang zu den Templates kann mit ACL eingeschränkt werden.
  
-  - Change the default template name to "​template.txt"​ (or aaa_template.txt) at around line 718 ''​inc/​common.php''​ ((Lines 811 and 812 in version 2009-02-14)). ​ 
-  - Now any user with write access in the namespace can create a page called "​template"​ in that namespace which will serve as the template. 
-  * Note: This method has the advantage that new templates will immediately be recognized. This may not be the case with the other methods (adding files or symlinks manually into the DokuWiki folders). 
de/namespace_templates.txt · Zuletzt geändert: 2017-09-21 12:56 von Juergen_aus_Zuendorf