Ada Programming $WikiTagline
 

Principes

Les catgories sont un moyen de classer et de retrouver des pages ayant un point commun. Elles existent dj au sein de PmWiki 2 et, dans la plupart des wikis, elles ne ncessitent pas de code ou de balises personnalises : Elles sont juste une convention utile dans les pages Wiki. L'ide est que chaque page qui appartient une catgorie donne doit avoir un lien avec une page commune contenant elle-mme des liens vers les autres pages de la Catgorie. Ces pages communes sont cres dans le groupe Category (valeur par dfaut indpendante de la langue, mais modifiable au moyen de la variable $CategoryGroup).

Mise en œuvre

L'utilisation des catgories se droule en deux phases :

  • Crer des liens vers les pages communes,
  • Retrouver les pages de la catgorie.

Une catgorie XYZ est cre 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 catgorie XYZ.

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

Le fait de cliquer sur ce lien va, trs probablement, ouvrir une page vide nomme Category.XYZ. Pour retrouver les pages lies cette page, il va nous suffire de crer un pied de page du groupe Category comme suit :

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

Cependant, pourront apparatre dans cette liste des pages contenant des liens vers la page Category.XYZ, mme s'il s'agit de pages que nous considrons ne pas faire partie de la catgorie XYZ. C'est pourquoi l'on aura plutt recours la syntaxe (:pagelist '!{$Name}' list=normal:) car, outre le fait qu'elle ne fait pas rfrence explicitement au groupe Category (ce qui laisse des possibilits d'volution du logiciel), seules les pages utilisant la nouvelle balise seront affiches.

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

Enfin, noter que la liste des pages de la catgorie pourra se trouver aussi bien dans Category.GroupHeader que dans Category.GroupFooter. Tout dpend si l'on souhaite voir cette liste apparatre avant ou aprs le texte que l'on mettra ventuellement sur les pages Category.XYZ.

En rsum

L'ajout d'un lien [[!Film]] dans une page dfinit l'appartenance de cette page la catgorie Film. Sous rserve de l'utilisation de la directive (:pagelist:), comme dcrit plus haut, il sera ais de faire afficher la liste de toutes les pages contenant cette instruction, c'est--dire des pages de la catgorie Film.

Imbrication des catgories

Les catgories disposent d'un potentiel trs lev, car les pages du groupe Category peuvent elles-mmes tre places dans leur(s) prope(s) catgorie(s).

Pour reprendre l'excellent exemple de John Rankin (non traduit), imaginons que les pages suivantes appartiennent aux catgories indiques droite :

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

Sous rserve de crer maintenant les pages Category.Horror, Category.Comedy, Category.Drama et Category.Documentary, et d'y mettre un lien [[!Genre]], et de faire de mme 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-catgorie". De la mme faon, nous aurions pu cliquer sur un lien dans la page Category.Year pour voir tous les films de l'anne choisie.

Et si, maintenant, nous mettons un lien [[!Category]] dans chaque catgorie 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 hirarchique au sens strict, puisqu'une page peut appartenir plusieurs catgories en mme temps.

Enfin, il est tout fait possible de mettre des informations relatives la catgorie sur la page correspondante, que ce soit pour donner des indications ou pour renvoyer sur des catgories connexes.

Le fonctionnement de la nouvelle directive

Comme indiqu prcdemment, tout ce qui est ncessaire l'utilisation des catgories est inclus dans PmWiki 2. Pour ceux que cela intresse, voici le fonctionnement interne de la directive.

Tout d'abord, la variable $CategoryGroup dfinit le nom du groupe contenant les pages de catgorie (par dfaut Category).

SDV($CategoryGroup,'Category');

Ensuite, la fonction Markup est utilise pour rsoudre les appels [[!XYZ]].

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

Le fait d'utiliser une directive spciale permet aux auteurs de pages de clairement distinguer entre une appartenance une catgorie et un lien avec une page qui se trouve tre une page de catgorie.

Dmarrer avec une bonne structure de catgories

La partie la plus difficile, dans la mise en place des catgories, 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 schma ou une structure dj existants sont-ils rutilisables ?
  • Combien de niveaux de catgories ? Pas trop plat, ni trop profond (peut-tre 3).
  • À combien de catgorie une page appartient-elle ? Ni trop, ni trop peu (peut-tre 3).
  • Comment utiliser de faons cohrentes le singulier et le pluriel ? [[Mercure]] est une [[!planete]], ou [[Mercure]] appartient la catgorie des [[!planetes]] ?
  • Faut-il utiliser des catgories plusieurs mots, comme [[!Instruments medicaux]] et [[!Instruments musicaux]], ou utiliser le module complmentaire 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.UtiliserLesCatgories