Les Catégories sont déjà implémentées dans PmWiki 2?, et dans la plupart des wikis elles ne nécessitent pas de code ou de balises spécifiques, elles sont juste une convention utile dans les pages Wiki. L’idée est que chaque page qui appartient à une catéorie donnée doit avoir un lien avec une page commune de la Catégorie.
Il y a aussi une balise spécifique comme raccourci vers les “category-entries”: [[!category]] créera un lien vers Category/category
Comme PmWiki a les Wiki Groups?, j’assume que les liens de Catégorie sont dans le groupe Category. Cependant, gardez à l’esprit que vous pouvez utiliser n’importe quel groupe ou plan de nommage de page pour cela — c’est juste une convention et cela ne requiert pas de programmation spécifique.
TODO: variables Wiki spécifiques pour les catégories.
Les points clés pour construire une catégorie sont :
- Dans chaque page qui appartient à une catégorie “XYZ”, créez un lien dans cette page vers
[[Category/XYZ]]ou[[Category.XYZ]]. - Puis, pour voir une liste de toutes les pages qui appartiennent à la catégorie XYZ, effectuez simplement une recherche de toutes les pages qui ont un lien vers la page
Category.XYZ.
(:pagelist linkto=Category.XYZ:) ou (:pagelist backlink=Category.XYZ:) (Je travaille encore sur la syntaxe), qui recherchera uniquement les liens et pas le texte. TODO: vérifier l’implémentation et changer cette doc
PmWiki 2 rend cette deuxième étape incroyablement simple puisque vous pouvez facilement générer une liste de toutes les pages avec des liens vers Category.XYZ en écrivant :
(:pagelist Category.XYZ:)
Ainsi, voilà tout ce qu’il y a pour les catégories. Mais attendez, il y a plus !
Comme John Rankin le faisait remarquer, la convention ci-dessus, combinée avec le fait que toutes les pages d’une catégorie sont dans un groupe unique, signifie que vous pouvez faire encore plus. Si nous créons une page nommée Category.GroupFooter, et mettons la balise suivante dans cette page :
(:pagelist Category.{$Name}:)
alors chaque page d’une catégorie, même celles qui sont vides ou inexistantes, afficheront une liste des pages qui sont dans la catégorie nommée par cette page.
Par exemple, l’affichage de la page Category.XYZ incluera automatiquement Category.GroupFooter, et {$Name} dans GroupFooter sera remplacé par le nom de la page courante (XYZ) pour donner la directive (:pagelist Category.XYZ:) décrite ci-dessus ! Ainsi, nous n’avons pas besoin d’écrire un tas de directives (:pagelist Category.<Name>:) pour créer la liste des pages — il suffit d’en écrire une générique dans Category.GroupHeader ou dans Category.GroupFooter pour toutes les catégories.
Category.XYZ (indépendemment du fait que ce lien ait été spécifié comme [[Category.XYZ]], [[Category/XYZ]], [[Category.X(Y)Z]], ou même [[x y z]]).
list=normal:
(:pagelist Category.{$Name} list=normal:)
Ainsi qu’avons nous obtenu ? Chaque page appartenant à Category.XYZ a un lien vers Category.XYZ, et en suivant ce lien affiche automatiquement une liste de toutes les pages de la catégorie XYZ.
Mais ce n’est pas tout !
Les pages Category.* peuvent elles mêmes être placées dans des catégories ! Ainsi, pour suivre l’exellent exemple de John, supposons que nous avons les pages de films suivantes dans les catégories listées à droite :
Film.SeanOfTheDead [[!Horreur]] [[!Comédie]] [[!2003]]Film.InMyFathersDen [[!Drame]] [[!2004]]Film.TheCorporation [[!Documentaire]] [[!2003]]
Maintenant, nous pouvons créer Category.Horreur, Category.Comédie, Category.Drame, et Category.Documentaire, et dans chacune de ces pages nous mettons [[!/Genre]]. Dans Category.2003 et Category.2004, nous mettons [[!Année]].
Ainsi, qu’arrive-t-il quand nous affichons Category.Genre ? Nous voyons les liens vers “Comédie”, “Drame”, “Documentaire” et “Horreur”, car ils sont dans la catégorie “Genre”. Quand nous cliquons sur un de ces liens, nous voyons tous les films listés dans une de ces catégories. De la même manière, si nous cliquons sur Category.Année, nous voyons les liens vers “2003″ et “2004″, et chacun de ces liens permet d’afficher la liste des films de ces années.
Finallement dans Category.Genre et Category.Year nous pouvons mettre [[!Category]], ce qui les met au niveau supérieur des categories. On peut ainsi les atteindre à partir de la page Category.Category. Voilà, nous avons la hiérarchie suivante:
Category.Category
Category.Genre
Category.Comedy
Film.SeanOfTheDead
Category.Drama
Film.InMyFathersDen
Category.Documentary
Film.TheCorporation
Category.Horror
Film.SeanOfTheDead
Category.Year
Category.2003
Film.SeanOfTheDead
Film.TheCorporation
Category.2004
Film.InMyFathersDen
Notez cependant que ça n’est pas une hiérarchie stricte, n’importe quelle page ou catégorie peut apparaître simultanément dans plusieurs catégories. Par exemple, Category.Documentaire peut être membre à la fois de Genre et de la liste racine des catégories.
Chaque page de catégorie peut avoir un texte avant la liste générée, par exemple pour donner une description générique des choses de la catégorie (ou elle peut être vide ce qui marche correctement).
Et tout ceci marche “tel quel” sans modification de PmWiki 2.0 ! John va un peu plus loin et propose de créer une balise spéciale pour “Category”, de telle manière que l’on puisse écrire des choses comme [[!Comedy]] et [[!Genre]] à la place de [[Category/Comedy]] et [[Category/Genre]] qui sont plus longs, mais pour le moment je laisse ceci en adaptation locale jusqu’à ce soit adopté plus largement et jusqu’à ce que l’on ait une bonne balise standard pour cela.
TODO: Cela est implémenté en test depuis v2develop25(?)
SDV($CategoryGroup,'Category');
Markup('[[!','<links','/\[\[!([^\|\]]+?)\]\]/',
"<span class='category'>[[$CategoryGroup/$1]]</span>");
En espérant que ceci aide. L’avantage d’une balise spécifique pour les catégories est que les auteurs peuvent assigner des pages à des catégories indépendamment et explicitement. Cela laisse les auteurs faire la distinction entre une référence à une catégorie et une référence à une page qui se révèle être une page de catégorie.
La partie difficile pour les catégories est de choisir un bon vocabulaire. Les gestionnaires de contenu de sites peuvent désirer suivre les recommandations pour la mise en place et le développement de thesaurus mulilinguales (ISO 5964–1985). Les questions à prendre en compte incluent:
- est-ce qu’un schéma existe déjà et peut être réutilisé ?
- le nombre de niveau dans un schéma multi-niveaux (pas trop faible, pas trop profond — par exempe 3)
- le nombre de catégories par page (pas trop, pas trop peu — par exemple 3)
- l’utilisation cohérente du singulier (
[[Mercury]] est une [[!planet]]) ou du pluriel ([[Mercury]] est une des [[!planets]] category) - la suppression des ambiguités et l’utilisation de phrases (
[[!musical instruments]]et[[!medical instruments]]) ou Cookbook/Subpage Markup? ([[!Instruments*Musical]]et[[!Instruments*Medical]])
TODO: ajouter aussi l’email de John Rankins ?
exemples (créés dans les groupes SampleCategory et SampleFilm):
- SampleCategory? - liste de toutes les catégories utilisées dans les pages d’exemples
- GroupFooter? - voir le texte ci-dessus
- SeanOfTheDead?
- InMyFathersDen?
- TheCorporation?
- TODO: get back the Sample-Pages from v2-site
- TODO: document new directive category and change samples
Traduction de UsingCategories - Page originale sur PmWiki:PmWikiFr.UtiliserLesCatégories
.
Page originale sur PmWikiFr.UtiliserLesCatégories - Références
Dernières modifications:
PmWikiFr.UtiliserLesCatégories: 18 février 2005 à 23h29
Page mise à jour le 18 février 2005 à 23h29.