DokuWiki

It's better when it's simple

Outils pour utilisateurs

Outils du site


fr:namespace_templates

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
fr:namespace_templates [2015-06-01 19:59] – [Modèles d'espaces de noms] 194.167.226.194fr:namespace_templates [2020-06-10 07:20] (Version actuelle) – [Motifs de remplacement] ajout nouveaux motifs Digitalin
Ligne 1: Ligne 1:
 ====== Modèles de catégorie ====== ====== 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, [[fr: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. +Il peut vous arriver de souhaiter que toutes les pages d'un [[fr:namespaces|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,  
 +[[fr:dokuWiki|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 ===== ===== Fichiers modèles =====
Ligne 8: Ligne 9:
 Deux types de modèles peuvent être utilisés : Deux types de modèles peuvent être utilisés :
  
-  * ''_template.txt'' qui est utilisé dans l'espace de nom en cours +  * ''%%_template.txt%%'' qui est utilisé dans l'espace de noms courant, et 
-  * et ''%%__template.txt%%'' (notez les deux caractères de soulignement) qui fonctionne comme le fichier ''_template.txt'' standardsauf qu'il agit dans tous les espaces de nom contenu dans celui-ci+  * ''%%__template.txt%%'' (notez les deux caractères de soulignement) qui fonctionne comme le premierexcepté 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 [[fr:dokuWiki|DokuWiki]], vous pouvez choisir :
  
-Un moyen de créer un fichier modèle est :+   - d'utiliser une extension comme [[plugin:TemplatePagename]] qui simplifie la procédure (voir les [[#extensions]] concernées plus bas) en vous permettant de créer et modifier un fichier modèle depuis le wiki 
 +  - d'utiliser le wiki pour sauver une page dans l'espace de noms approprié, avec le contenu que vous voulez utiliser comme modèle, 
 +      - puis par FTP ou WebDAV faire une copie de ce fichier dans le même dossier et de le renommer ensuite en ''%%_template.txt%%'' ou ''%%__template.txt%%'' 
 +      - et enfin via le wiki, supprimer la page originale 
 +  - d'utiliser des liens symboliques (voir plus bas dans les [[#Modèles éditables par le biais de liens symboliques]])
  
-  - utiliser le wiki pour sauver une page dans l'espace de noms appropriéavec le contenu que vous voulez utiliser comme modèle pour cet espace + 
-  - utiliser FTP ou WebDAV pour faire une copie de ce fichier dans le même dossier et de le renommer ensuite en ''_template.txt'' +===== Syntaxe ===== 
-  utiliser le wiki pour supprimer la page originale+ 
 +Le contenu du fichier est le [[fr:wiki:syntax|langage]] de balisage standard du wiki. 
 + 
 +==== Motifs de remplacement ==== 
 + 
 +À 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 | 
 +^ @!CURNS@ | idem que précédemment mais avec la première lettre en majuscule 
 +^ @!!CURNS@ | idem que précédemment mais avec la première lettre de tous les mots en majuscule 
 +^ @!CURNS!@ | idem que précédemment mais avec tous les caractères en majuscule 
 +^ @PAGE@   | nom de la page ((l'ID sans la catégorie et avec les caractère de soulignement "_" remplacés par des espaces))               | 
 +^ @!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 ((l'ID sans la catégorie, en conservant les caractères de soulignement "_"))                                 | 
 +^ @!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'[[phpfn>strftime]] pour insérer la date au moment de la création dans un format personnalisable | 
 +^ <nowiki>%%</nowiki> | N'oubliez pas de doubler les ''%'' pour que cela fonctionne. Ici, un caractère  litéral ''%'' apparait dans le modèle                                    |
  
 ==== Exemples ====  ==== Exemples ==== 
 +
 Imaginons que vous ayez la structure suivante:  Imaginons que vous ayez la structure suivante: 
 <code> <code>
-.../www/repertoire_de_dokuwiki/data/pages/+.../www/rep_de_dokuwiki/data/pages/
 </code> </code>
  
Ligne 32: Ligne 65:
 </code> </code>
  
-<nowiki> 
-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 +  Il suffit alors de créer un fichier ''%%__template.txt%%'' (avec 2 soulignés au début) sous .../www/rep_de_dokuwiki/data/pages/ 
-</nowiki>+  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-haut sera déjà là !+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 éditerez la page pour la première fois, vous aurez donc: +Lorsque vous éditez 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 [[:fr:namespace_templates#motifs_de_remplacement|motifs de remplacement]].+  * En H1 le nom de la page déjà écrit (correspond à **@PAGE@** : voir la liste des [[#motifs_de_remplacement|motifs de remplacement]].
   * Une image à gauche, pour indiquer à l'utilisateur l'emplacement de l'image et lui rappeler éventuellement de la changer...   * 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...+  * Un texte exemple pour indiquer à l'utilisateur l'emplacement où il doit mettre son texte par exemple...
  
 Imaginons maintenant que vous ayez la structure suivante: Imaginons maintenant que vous ayez la structure suivante:
  
 <code> <code>
-.../www/repertoire_de_dokuwiki/data/pages/abc +.../www/rep_de_dokuwiki/data/pages/abc 
-.../www/repertoire_de_dokuwiki/data/pages/def +.../www/rep_de_dokuwiki/data/pages/def 
-.../www/repertoire_de_dokuwiki/data/pages/ghi +.../www/rep_de_dokuwiki/data/pages/ghi 
-.../www/repertoire_de_dokuwiki/data/pages/jkl+.../www/rep_de_dokuwiki/data/pages/jkl
 </code> </code>
  
-Vous voulez que chaque page créée dans chacun de ces espaces de noms soit différente de celles créées dans un autre espace de nom.+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 nom abc, vous voulez ceci:+Par exemple, dans l'espace de noms ''abc'', vous voulez ceci:
  
 <code> <code>
Ligne 64: Ligne 95:
 </code> </code>
  
-tandis que dans l'espace de nom DEF, vous voulez plutôt ceci:+tandis que dans l'espace de noms ''def'', vous voulez plutôt ceci:
  
 <code> <code>
Ligne 72: Ligne 103:
 </code> </code>
  
-<nowiki> + 
-Il suffit de créer des fichiers __template.txt différents et de mettre chacun dans le répertoire correspondant à son espace de nom+Il suffit de créer des fichiers ''%%__template.txt%%'' différents et de mettre chacun dans le répertoire correspondant à sa catégorie
-</nowiki>+
  
 <code> <code>
-.../www/repertoire_de_dokuwiki/data/pages/abc/__template.txt (avec le code pour la section abc) +.../www/rep_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/rep_de_dokuwiki/data/pages/def/__template.txt (avec le code pour la section def) 
-.../www/repertoire_de_dokuwiki/data/pages/ghi/__template.txt ... +.../www/rep_de_dokuwiki/data/pages/ghi/__template.txt ... 
-.../www/repertoire_de_dokuwiki/data/pages/jkl/__template.txt ...+.../www/rep_de_dokuwiki/data/pages/jkl/__template.txt ...
 </code> </code>
  
-<nowiki> 
-Enfin, si vous voulez qu'une template soit appliquée __uniquement__ au niveau d'un espace de nom (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é.  
-</nowiki> 
  
-Par exemple: .../www/repertoire_de_dokuwiki/data/pages/abc/_template.txt ne sera appliqué que sous : +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 : 
 <code> <code>
-.../www/repertoire_de_dokuwiki/data/pages/abc/+.../www/rep_de_dokuwiki/data/pages/abc/
 </code> </code>
 et pas du tout sous:  et pas du tout sous: 
 <code> <code>
-.../www/repertoire_de_dokuwiki/data/pages/abc/xxx/+.../www/rep_de_dokuwiki/data/pages/abc/xxx/
 </code> </code>
  
-si j'ai bien compris :-) +===== Modèles éditables par le biais de liens symboliques =====
  
 +//**NOTE: Les instructions contenues dans cette section concernent une utilisation sur des serveurs Linux et ne fonctionneront pas sur un serveur Windows.**//
  
-===== Syntaxe =====+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.
  
-Le contenu du fichier est le [[:wiki:syntax|langage]] standard du wiki+  - Créez une catégorie appelée "​modeles",​ ou n'​importe quel nom similaire. 
-==== Motifs de remplacement ====+  - Dans cette catégorie, créez une page pour chaque [[fr:namespace_templates|modèle de catégorie]] que vous souhaitez rendre disponible
 +  - 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éée. Vous avez maintenant un modèle qui peut être modifié facilement par l'​interface wiki.
  
-À l'intérieur du fichiervous pouvez également utiliser certain motif de remplacement pour rendre votre modèle un peu plus dynamique.+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.
  
-^ @ID@     | identifiant (ID) complet de la page                                                                                         | +  cd /var/www/html/dokuwiki/data/pages/namespace/something 
-^ @NS@     | espace de noms de la page                                                                                                   | +  ln -s _template.txt template.txt 
-^ @PAGE@   | nom de la page ((l'ID sans l'espace de noms et avec les caractère de soulignement "_" remplacés par des espaces))           | +   
-^ @!PAGE@  | idem que précédemment mais avec la première lettre en majuscule                                                             | +For these softlinks to workyou might need the FollowSymLinks option set for this directory in your webserver's configuration.
-^ @!!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 ((l'ID sans l'espace de nomsen conservant les caractères de soulignement "_"))                             | +
-^ @!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'[[http://fr.php.net/strftime|strftime]] pour insérer la date dans un format personnalisable. N'oubliez pas de doubler les ''%'' pour que cela fonctionne.+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.
  
-**Un exemple serait le bienvenu. Peu compréhensible en l'état.** +//**NOTE: Cette section contient des instructions à utiliser sur un serveur Windows et ne fonctionneront sous système Linux.**//
->> C'est maintenant fait (je pense :-) ): voir [[:fr:namespace_templates#exemples|Exemples]] ci-haut.+
  
 +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.
  
-===== Édition de modèles =====+  cd c:\inetpub\wiki\data\pages\namespace\something 
 +  mklink template.txt _template.txt
  
-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 [[:namespace_templates|version anglaise]] de cette documentation.//+===== Extensions =====
  
 +Des fonctionnalités supplémentaires sont implémentés par des extensions pour les modèles de catégories.
  
-==== Modèles éditables par le biais de liens symboliques ====+  * L'extension [[plugin:TemplatePagename]] change les noms de ''%%_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. 
 +  
 +  * L'extension [[plugin:NewPageTemplate]] ajoute un paramètre dans l'URL qui définit quelle page existant du wiki est chargée comme modèle. Chaque page autorisé par les [[fr:acl|ACLS]] est autorisé. 
  
-De cette manière, vous pouvez stocker vos modèles dans un espace de nomsEn 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.+  * L'extension [[plugin:Snippets]] ajoute un bouton dans la barre d'édition qui vous permet d'insérer facilement des modèles à l'édition d'une pageLes modèles illustrés ont besoin d'être listés sur une pagepar défaut ''snippets '' que vous pouvez renommer dans les paramètres de configuration.
  
-  - Créez un espace de noms appelé "modeles", ou n'importe quel nom similaire. +  * L'extension [[plugin:Headerfooter]] ajoute le texte de l'en-tête ou du pied de page aux pages, uniquement lorsqu'elles sont affichées.
-  - Dans cet espace de noms, créez une page pour chaque [[:namespace_templates | modèle d'espaces de noms]] que vous souhaitez rendre disponible. +
-  - 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 l'espace de noms 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.+===== Support @GROUPS@ =====
  
-  - 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'' ((Lignes 811 et 812 dans la version 2009-02-14)). +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).
-  - À présent n'importe quel utilisateur ayant un accès en écriture dans l'espace de noms peut y créer une page appelée "modele" ((ou le nom que vous aurez choisi à l'étape 1)) 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).+
  
 +Le correctif suivant l'implémente.
  
-==== Modèles éditables (méthode dépréciée) ====+<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); 
 + 
  
-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 +</code>
-<code>  global $INFO;</code> +
-puis vers la ligne 98 (celle avec trim() ), remplacez par  +
-<code>  $id = ($INFO['perm'] == 255 ? trim($id,':.-') : trim($id,':._-';))</code>+
  
-Maintenant, vous devriez être capable d'éditer le modèle d'espace de noms avec l'URL ''doku.php?id=_template&do=edit''. **Note**Ceci ne semble fonctionner que pour le modèle de l'espace de noms racine.+ --- //[[shtrom-doku@ssji.net|Olivier Mehani]] 2010/01/05 10:19//
  
-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 cet espace de noms pourra créer une page appelée "template" dans cet espace de noms, qui servira de modèle. 
  
  
 +===== Crédits ===== 
  
 + --- //[[philippe@bdsemin.com|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.v@univup.com|Bertrand Villien]] 2009-07-07 01:40//\\
 + --- //[[user>Digitalin|Digitalin]] //2018-01-27 11:52// \\ 
 + --- [[user>Digitalin|Digitalin]] //2018-05-03 22:03// \\
 + --- [[user>schplurtz|Schplurtz le Déboulonné]] //2019-05-01 18:51//
  
-===== Crédits =====  
  
- --- //[[philippe@bdsemin.com|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.v@univup.com|Bertrand Villien]] 2009-07-07 01:40// 
fr/namespace_templates.1433181546.txt.gz · Dernière modification : 2015-06-01 19:59 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