DokuWiki

It's better when it's simple

Outils pour utilisateurs

Outils du site


fr:namespace_templates

Ceci est une ancienne révision du document !


Modèles de catégorie

Parfois vous voudriez que toutes les pages d'une catégorie donnée aient un « squelette » commun. Par exemple, dans la catégorie 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 catégorie”. 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.

Fichiers modèles

Deux types de modèles peuvent être utilisés :

  • _template.txt qui est utilisé dans la catégorie courante
  • et __template.txt (notez les deux caractères de soulignement) qui fonctionne comme le fichier _template.txt standard, sauf qu'il agit dans toutes les catégories contenues dans celle-ci

Un moyen de créer un fichier modèle est :

  1. Utiliser le wiki pour sauver une page dans la catégorie appropriée, avec le contenu que vous voulez utiliser comme modèle pour cette catégorie,
  2. utiliser FTP ou WebDAV pour faire une copie de ce fichier dans le même dossier et de le renommer ensuite en _template.txt
  3. utiliser le wiki pour supprimer la page originale

Exemples

Imaginons que vous ayez la structure suivante:

.../www/repertoire_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/repertoire_de_dokuwiki/data/pages/ Donc: .../www/repertoire_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-haut sera déjà là !

Lorsque vous éditerez la page pour la première fois, vous aurez donc:

  • En H1 le nom de la page déjà écrit (correspond à @PAGE@ : voir plus bas la liste des motifs de remplacement.
  • Une image à gauche, pour indiquer à l'utilisateur l'emplacement de l'image et lui rappeler éventuellement de la changer…
  • Un texte bidon pour indiquer à l'utilisateur l'emplacement où il doit mettre son texte par exemple…

Imaginons maintenant que vous ayez la structure suivante:

.../www/repertoire_de_dokuwiki/data/pages/abc
.../www/repertoire_de_dokuwiki/data/pages/def
.../www/repertoire_de_dokuwiki/data/pages/ghi
.../www/repertoire_de_dokuwiki/data/pages/jkl

Vous voulez que chaque page créée dans chacune de ces catégories soit différente de celles créées dans une autre catégorie.

Par exemple, dans la catégorie abc, vous voulez ceci:

====== @PAGE@ ======
{{ :dummyabc.png?75x75|Nom de la section ABC}}
Lorem ipsum dolor sit amet, ...

tandis que dans la catégorie 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/repertoire_de_dokuwiki/data/pages/abc/__template.txt (avec le code pour la section abc)
.../www/repertoire_de_dokuwiki/data/pages/def/__template.txt (avec le code pour la section def)
.../www/repertoire_de_dokuwiki/data/pages/ghi/__template.txt ...
.../www/repertoire_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ù l'on souhaite qu'il soit appliqué.

Par exemple: …/www/repertoire_de_dokuwiki/data/pages/abc/_template.txt ne sera appliqué que sous :

.../www/repertoire_de_dokuwiki/data/pages/abc/

et pas du tout sous:

.../www/repertoire_de_dokuwiki/data/pages/abc/xxx/

si j'ai bien compris :-)

Syntaxe

Le contenu du fichier est le langage standard du wiki.

Motifs de remplacement

À l'intérieur du fichier, vous pouvez également utiliser certain motif de remplacement pour rendre votre modèle un peu plus dynamique.

@ID@ identifiant (ID) complet de la page
@NS@ 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é

De plus, vous pouvez utiliser n'importe quelle valeur d'strftime pour insérer la date dans un format personnalisable. N'oubliez pas de doubler les % pour que cela fonctionne.

Un exemple serait le bienvenu. Peu compréhensible en l'état.
C'est maintenant fait (je pense :-) ): voir Exemples ci-haut.

Édition de modèles

Vous ne pouvez pas éditer le fichier _template.txt via DokuWiki – seul celui qui peut éditer les fichiers directement depuis le serveur le peut (généralement un administrateur qui utilise FTP ou WebDAV). Pour ce faire il y a deux astuces: l'une par la mise en place de liens symboliques, et l'autre impliquant une modification de code.

Une troisième astuce a été laissée pour information, mais a été dépréciée et supprimée de la version anglaise de cette documentation.

Modèles éditables par le biais de liens symboliques

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.

  1. Créez une catégorie appelée “modeles”, ou n'importe quel nom similaire.
  2. Dans cette catégorie, créez une page pour chaque modèle de catégorie que vous souhaitez rendre disponible.
  3. Suivez les instructions données ci-dessus, à la seule différence que vous devez faire de _template.txt un lien symbolique vers la page de modèle correcte depuis la catégorie que vous avez précédemment créé. Vous avez maintenant un modèle qui peut être modifié facilement par l'interface wiki.

Modèles éditables pour tous les utilisateurs

De cette façon, tous les modèles seront modifiables par n'importe qui avec un accès en écriture.

  1. Changez le nom du modèle par défaut en “modele.txt” (ou template.txt ou encore aaa_template.txt) au alentours de la ligne 718 du fichier inc/common.php 3).
  2. À présent n'importe quel utilisateur ayant un accès en écriture dans la catégorie peut y créer une page appelée “modele” 4) qui servira de modèle.
  • Note: Cette méthode a l'avantage que les nouveaux modèles seront immédiatement reconnus. Ça ne pourrait être le cas pour les autres méthodes (en ajoutant manuellement des fichiers ou des liens symboliques dans les dossiers de DokuWiki).

Modèles éditables (méthode dépréciée)

Vous pouvez permettre l'édition dans le wiki aux admins avec le hack suivant: Ouvrez inc/pageutils.php et cherchez la fonction cleanID(). Au début de cette fonction, ajoutez global $INFO

  global $INFO;

puis vers la ligne 98 (celle avec trim() ), remplacez par

  $id = ($INFO['perm'] == 255 ? trim($id,':.-') : trim($id,':._-';))

Maintenant, vous devriez être capable d'éditer le modèle de catégorie avec l'URL doku.php?id=_template&do=edit. Note: Ceci ne semble fonctionner que pour le modèle de la catégorie racine.

Si vous voulez autoriser quiconque à éditer le modèle, vous pouvez changer son nom en “template.txt” vers la ligne 524 de inc/common.php. Dès lors, tout utilisateur ayant le droit d'écriture dans cette catégorie pourra créer une page appelée “template” dans cette catégorie, qui servira de modèle.

Crédits

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:04Bertrand Villien 2009-07-07 01:40

1)
l'ID sans la catégorie et avec les caractère de soulignement “_” remplacés par des espaces
2)
l'ID sans la catégorie, en conservant les caractères de soulignement “_”
3)
Lignes 811 et 812 dans la version 2009-02-14
4)
ou le nom que vous aurez choisi à l'étape 1
fr/namespace_templates.1433181913.txt.gz · Dernière modification : 2015-06-01 20:05 de 194.167.226.194

Sauf mention contraire, le contenu de ce wiki est placé sous les termes de la licence suivante : 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