Principes

Les catégories sont un moyen de classer et de retrouver des pages ayant un point commun. Elles existent déjà au sein de PmWiki 2 et, dans la plupart des wikis, elles ne nécessitent pas de code ou de balises personnalisées : Elles sont juste une convention utile dans les pages Wiki. L'idée est que chaque page qui appartient à une catégorie donnée doit avoir un lien avec une page commune contenant elle-même des liens vers les autres pages de la Catégorie. Ces pages communes sont crées dans le groupe Category (valeur par défaut indépendante de la langue, mais modifiable au moyen de la variable $CategoryGroup).

Mise en œuvre

L'utilisation des catégories se déroule en deux phases :

  • Créer des liens vers les pages communes,
  • Retrouver les pages de la catégorie.

Une catégorie XYZ est créée par l'existence d'un lien vers la page Category.XYZ. Le fait de mettre un tel lien dans une page est equivalent à dire que cette page appartient à la catégorie XYZ.

Afin de faciliter la création de ces liens, une nouvelle balise existe maintenant : La syntaxe [[!XYZ]] est (presque) équivalente à [[Category/XYZ]]. L'utilisation de cette nouvelle balise est recommandée, ne serait-ce que pour la clarté du texte source.

Le fait de cliquer sur ce lien va, très probablement, ouvrir une page vide nommée Category.XYZ. Pour retrouver les pages liées à cette page, il va nous suffire de créer un pied de page du groupe Category comme suit :

Créer la page Category.GroupFooter?,
Y placer l'instruction (:pagelist link=Category.{$Name} list=normal:),
Enregistrer la page.

Cependant, pourront apparaître dans cette liste des pages contenant des liens vers la page Category.XYZ, même s'il s'agit de pages que nous considérons ne pas faire partie de la catégorie XYZ. C'est pourquoi l'on aura plutôt recours à la syntaxe (:pagelist '!{$Name}' list=normal:) car, outre le fait qu'elle ne fait pas référence explicitement au groupe Category (ce qui laisse des possibilités d'évolution du logiciel), seules les pages utilisant la nouvelle balise seront affichées.

Les Wikis utilisant des catégories à plusieurs mots auront avantage à utiliser la syntaxe (:pagelist '!{$Namespaced}' list=normal:).

Enfin, noter que la liste des pages de la catégorie pourra se trouver aussi bien dans Category.GroupHeader? que dans Category.GroupFooter?. Tout dépend si l'on souhaite voir cette liste apparaître avant ou après le texte que l'on mettra éventuellement sur les pages Category.XYZ.

En résumé

L'ajout d'un lien [[!Film]] dans une page définit l'appartenance de cette page à la catégorie Film. Sous réserve de l'utilisation de la directive (:pagelist:), comme décrit plus haut, il sera aisé de faire afficher la liste de toutes les pages contenant cette instruction, c'est-à-dire des pages de la catégorie Film.

Imbrication des catégories

Les catégories disposent d'un potentiel très élevé, car les pages du groupe Category peuvent elles-mêmes être placées dans leur(s) prope(s) catégorie(s).

Pour reprendre l'excellent exemple de John Rankin (non traduit), imaginons que les pages suivantes appartiennent aux catégories indiquées à droite :

 Film.SeanOfTheDead    [[!Horror]] [[!Comedy]] [[!2003]]
 Film.InMyFathersDen   [[!Drama]]              [[!2004]]
 Film.TheCorporation   [[!Documentary]]        [[!2003]]

Sous réserve de créer maintenant les pages Category.Horror, Category.Comedy, Category.Drama et Category.Documentary, et d'y mettre un lien [[!Genre]], et de faire de même avec les pages Category.2003=) et [=Category.2004 avec [[!Year]], nous avons maintenant créé une structure à plusieurs niveaux.

En effet, si nous affichons la page Category.Genre, nous voyons s'afficher Horror, Comedy, Drama et Documentary. Si nous cliquons maintenant sur l'un de ces mots, nous verrons tous les films de cette "sous-catégorie". De la même façon, nous aurions pu cliquer sur un lien dans la page Category.Year pour voir tous les films de l'année choisie.

Et si, maintenant, nous mettons un lien [[!Category]] dans chaque catégorie principale (Genre et Year), nous avons fabriqué ceci :

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

Notons cependant qu'il ne s'agit pas d'une structure hiérarchique au sens strict, puisqu'une page peut appartenir à plusieurs catégories en même temps.

Enfin, il est tout à fait possible de mettre des informations relatives à la catégorie sur la page correspondante, que ce soit pour donner des indications ou pour renvoyer sur des catégories connexes.

Le fonctionnement de la nouvelle directive

Comme indiqué précédemment, tout ce qui est nécessaire à l'utilisation des catégories est inclus dans PmWiki 2. Pour ceux que cela intéresse, voici le fonctionnement interne de la directive.

Tout d'abord, la variable $CategoryGroup définit le nom du groupe contenant les pages de catégorie (par défaut Category).

SDV($CategoryGroup,'Category');

Ensuite, la fonction Markup est utilisée pour résoudre les appels [[!XYZ]].

Markup('[[!','<links','/\[\[!([^\|\]] ?)\]\]/',
  "<span class='category'>[[$CategoryGroup/$1]]</span>");

Le fait d'utiliser une directive spéciale permet aux auteurs de pages de clairement distinguer entre une appartenance à une catégorie et un lien avec une page qui se trouve être une page de catégorie.

Démarrer avec une bonne structure de catégories

La partie la plus difficile, dans la mise en place des catégories, reste le choix d'un vocabulaire adapté. Les gestionnaires du contenu d'un site peuvent s'inspirer des normes ISO 2788-1986 et ISO ISO 5964-1985.

Parmi les questions à aborder, nous trouvons :

  • Un schéma ou une structure déjà existants sont-ils réutilisables ?
  • Combien de niveaux de catégories ? Pas trop plat, ni trop profond (peut-être 3).
  • À combien de catégorie une page appartient-elle ? Ni trop, ni trop peu (peut-être 3).
  • Comment utiliser de façons cohérentes le singulier et le pluriel ? [[Mercure]] est une [[!planete]], ou [[Mercure]] appartient à la catégorie des [[!planetes]] ?
  • Faut-il utiliser des catégories à plusieurs mots, comme [[!Instruments medicaux]] et [[!Instruments musicaux]], ou utiliser le module complémentaire Subpage Markup? avec [[!Instruments*medicaux]] et [[!Instruments*musicaux]] ?

L'on peut aussi, parfois, laisser les auteurs libres des termes qu'ils utilisent, afin de voir émerger un langage commun que l'on retiendra.


Voir aussi dans la page en anglais l'exercice SolaRoof.


Nouvelle traduction le 12 octobre 2005 par Jean-Dom?.

Traduction de Categories - Page originale sur PmWiki:PmWikiFr.UtiliserLesCatégories