Il peut vous arriver de souhaiter que toutes les pages d'un espace de noms (catégorie) donné aient un «squelette» commun. Par exemple, dans l'espace de noms adresse
, vous auriez un tableau déjà prêt qu'il n'y aurait plus qu'à remplir avec les données.
Ceci peut facilement être réalisé grâce aux «modèles de pages». Lorsque vous créez une page,
DokuWiki cherche un fichier _template.txt
dans la catégorie à laquelle appartient la page. S'il existe, il le copie dans la fenêtre de l'éditeur de la nouvelle page. Ces fichiers _template.txt
sont de simples fichiers texte contenant de la syntaxe wiki.
Deux types de modèles peuvent être utilisés :
_template.txt
qui est utilisé dans l'espace de noms courant, et__template.txt
(notez les deux caractères de soulignement) qui fonctionne comme le premier, excepté qu'il agit dans toutes les espaces de noms contenus dans celui-ci.Si les deux fichiers (hérité et normal) sont présents dans un espace de noms, le fichier normal est utilisé.
Comme vous ne pouvez pas créer et modifier le fichier _template.txt
directement dans DokuWiki, vous pouvez choisir :
_template.txt
ou __template.txt
Le contenu du fichier est le langage de balisage standard du wiki.
À l'intérieur du fichier, vous pouvez également utiliser certains motifs de remplacement pour rendre votre modèle un peu plus dynamique.
@ID@ | identifiant (ID) complet de la page |
---|---|
@NS@ | catégorie de la page |
@CURNS@ | dernier élément de la catégorie de la page |
@PAGE@ | nom de la page 1) |
@!PAGE@ | idem que précédemment mais avec la première lettre en majuscule |
@!!PAGE@ | idem que précédemment mais avec la première lettre de chaque mot en majuscule |
@!PAGE!@ | idem que précédemment mais avec toutes les lettres en majuscule |
@FILE@ | nom de la page 2) |
@!FILE@ | idem que précédemment mais avec la première lettre en majuscule |
@!FILE!@ | idem que précédemment mais avec toutes les lettres en majuscule |
@USER@ | identifiant de l'utilisateur qui créé la page |
@NAME@ | nom de l'utilisateur qui créé la page |
@MAIL@ | adresse email de l'utilisateur qui créé la page |
@DATE@ | date et heure à laquelle l'édition de la page a commencé |
%a %d-%m-%y etc. | N'importe quelle valeur d'strftime pour insérer la date au moment de la création dans un format personnalisable |
%% | N'oubliez pas de doubler les % pour que cela fonctionne. Ici, un caractère litéral % apparait dans le modèle |
Imaginons que vous ayez la structure suivante:
.../www/rep_de_dokuwiki/data/pages/
Imaginons que pour l'ensemble du site, vous désirez que toutes les nouvelles pages soient créées avec le code basique suivant:
====== @PAGE@ ====== {{ :dummy.png?75x75|Nom de la section}} Lorem ipsum dolor sit amet, ...
Il suffit alors de créer un fichier ''%%__template.txt%%'' (avec 2 soulignés au début) sous .../www/rep_de_dokuwiki/data/pages/ Donc: .../www/rep_de_dokuwiki/data/pages/__template.txt
Ainsi, chaque fois que vous créerez une nouvelle page et voudrez l'éditer pour la première fois, le code ci-dessus sera déjà là !
Lorsque vous éditez la page pour la première fois, vous aurez donc:
Imaginons maintenant que vous ayez la structure suivante:
.../www/rep_de_dokuwiki/data/pages/abc .../www/rep_de_dokuwiki/data/pages/def .../www/rep_de_dokuwiki/data/pages/ghi .../www/rep_de_dokuwiki/data/pages/jkl
Vous souhaitez que chaque page créée dans chacun de ces espaces de noms soit différente de celles créées dans une autre.
Par exemple, dans l'espace de noms abc
, vous voulez ceci:
====== @PAGE@ ====== {{ :dummyabc.png?75x75|Nom de la section ABC}} Lorem ipsum dolor sit amet, ...
tandis que dans l'espace de noms def
, vous voulez plutôt ceci:
====== @PAGE@ ====== {{ :dummydef.png?75x75|Nom de la section DEF}} Lorem ipsum dolor sit amet, ...
Il suffit de créer des fichiers __template.txt
différents et de mettre chacun dans le répertoire correspondant à sa catégorie:
.../www/rep_de_dokuwiki/data/pages/abc/__template.txt (avec le code pour la section abc) .../www/rep_de_dokuwiki/data/pages/def/__template.txt (avec le code pour la section def) .../www/rep_de_dokuwiki/data/pages/ghi/__template.txt ... .../www/rep_de_dokuwiki/data/pages/jkl/__template.txt ...
Enfin, si vous voulez qu'une template soit appliquée uniquement au niveau d'une catégorie (et non ailleurs sous lui ou avant lui),
alors il suffit de créer le fichier _template.txt
(avec un seul souligné au début) et de le mettre où vous souhaitez qu'il soit appliqué.
Par exemple: …/www/rep_de_dokuwiki/data/pages/abc/_template.txt ne sera appliqué que sous :
.../www/rep_de_dokuwiki/data/pages/abc/
et pas du tout sous:
.../www/rep_de_dokuwiki/data/pages/abc/xxx/
NOTE: Les instructions contenues dans cette section concernent une utilisation sur des serveurs Linux et ne fonctionneront pas sur un serveur Windows.
De cette manière, vous pouvez stocker vos modèles dans une catégorie. En faisant un lien symbolique vers eux, vous pourrez les utiliser comme modèles. Vous pouvez bien évidemment choisir de faire un modèle non-modifiable en n'utilisant pas de lien symbolique.
_template.txt
un lien symbolique vers la page de modèle correcte depuis la catégorie que vous avez précédemment créée. Vous avez maintenant un modèle qui peut être modifié facilement par l'interface wiki.
Une autre manière consiste à créer un lien symbolique dans le répertoire lui-même. Ainsi vous créez un template.txt
lequel est un lien de _template.txt
, dans son propre espace de noms.
cd /var/www/html/dokuwiki/data/pages/namespace/something ln -s _template.txt template.txt
For these softlinks to work, you might need the FollowSymLinks option set for this directory in your webserver's configuration.
Pour que ces liens fonctionnent, vous pourriez avoir besoin de l'option FollowSymLinks définie pour ce répertoire dans la configuration de votre serveur Web.
NOTE: Cette section contient des instructions à utiliser sur un serveur Windows et ne fonctionneront sous système Linux.
Ouvrez l'invite de commande (cmd.exe) sur le serveur, et naviguez jusqu'à l'endroit où vous vous trouvez avec un modèle. Utilisez la commande MKLINK pour créer un lien symbolique.
cd c:\inetpub\wiki\data\pages\namespace\something mklink template.txt _template.txt
Des fonctionnalités supplémentaires sont implémentés par des extensions pour les modèles de catégories.
_template
et __template
à votre choix dans les paramètres de configuration. Les valeurs par défaut sont respectivement c_template
et i_template
. Cette extension vous permet de choisir des pages wiki normales comme modèle afin qu'elles soient éditables via l'interface wiki.snippets
que vous pouvez renommer dans les paramètres de configuration.
Il peut être intéressant de prendre en charge le motif de remplacement @GROUPS@
pour l'étendre à la liste de groupes de l'utilisateur qui crée la page (par exemple, pour spécifier un ensemble de balises sur la page d'accueil d'un utilisateur).
Le correctif suivant l'implémente.
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
— Philippe LAPEYRIE 2006-05-21 21:27
— Aurélie 2006-12-10 18:02
— Yves Jacolin 2008-05-25 10:29
— Laynee 2008/08/25 13:04
— Bertrand Villien 2009-07-07 01:40
— Digitalin 2018-01-27 11:52
— Digitalin 2018-05-03 22:03
— Schplurtz le Déboulonné 2019-05-01 18:51