Cette page est encore en cours de développement.

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 :

  1. Dans chaque page qui appartient à une catégorie “XYZ”, créez un lien dans cette page vers [[Category/XYZ]] ou [[Category.XYZ]].
  2. 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.
note: toutes les pages qui contiennent le texte “Category.XYZ” sont affichées. Une version future permettra (: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.

Cela trouve toutes les instances de “Category.XYZ” dans le texte, et cela trouve aussi n’importe quelle page qui a un lien vers 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]]).
Aussi, des pages telles que Recent Changes apparaissent dans la catégorie et devraient probablement être filtrées par list=normal:
(:pagelist Category.{$Name} list=normal:)
(Il n’est pas possible d’ajouter des pages qui n’existent pas comme lien dans une page, car ce lien se transformerait automatiquement en lien action=edit so you can add the link only in the URL-field of the browser ??????)

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(?)

Quand nous choisissons une bonne balise, voici tout ce qui est nécessaire: (utilise [[!Comedy]] pour illustration) (traduction ????)
  
    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:

(quotes of postings in pmwiki-user-maillist)

TODO: ajouter aussi l’email de John Rankins ?


exemples (créés dans les groupes SampleCategory et SampleFilm):



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

RSS ~ Copyright 2004-2008 © Linucie - Asso. Loi 1901 - CNIL : 1045544 - Notre hébergeur : APINC.org
Publication sous Licence GNU/FDL propulsée par PmWiki - XHTML 1.0, CSS 2.1, WAI.