Jump to content

Extension:CategoryTree

From mediawiki.org
This page is a translated version of the page Extension:CategoryTree and the translation is 100% complete.
Cette extension est fournie avec MediaWiki 1.31 et supérieur. Ainsi vous n'avez pas besoin de télécharger à nouveau. Néanmoins, vous devez encore suivre les autres instructions fournies.
Manuel des extensions MediaWiki
CategoryTree
État de la version : stable
Implémentation Balise , Fonction d'analyseur , Page spéciale
Description Génère l'arborescence dynamique d'une catégorie sur une page wiki.
Auteur(s) Daniel Kinzler (Duesentriebdiscussion)
Dernière version mises à jour continues
Politique de compatibilité Versions ponctuelles alignées avec MediaWiki. Le master n'est pas compatible arrière.
MediaWiki 1.25+
Licence Licence publique générale GNU v2.0 ou supérieur
Téléchargement
README
  • $wgCategoryTreeAllowTag
  • $wgCategoryTreeCategoryPageOptions
  • $wgCategoryTreePageCategoryOptions
  • $wgCategoryTreeMaxDepth
  • $wgCategoryTreeSidebarOptions
  • $wgCategoryTreeDefaultOptions
  • $wgCategoryTreeMaxChildren
  • $wgCategoryTreeSpecialPageOptions
  • $wgCategoryTreeOmitNamespace
  • $wgCategoryTreeSidebarRoot
  • $wgCategoryTreeDisableCache
  • $wgCategoryTreeCategoryPageMode
  • $wgCategoryTreeDefaultMode
  • $wgCategoryTreeUseCategoryTable
  • $wgCategoryTreeHijackPageCategories
Téléchargements trimestriels 302 (Ranked 14th)
Utilisé par les wikis publics 10,554 (Ranked 11th)
Traduire l’extension CategoryTree sur translatewiki.net si elle y est disponible
Problèmes Tâches ouvertes · Signaler un bogue

L'extension CategoryTree fournit une vue dynamique sous forme d'arborescence de la structure des catégories du wiki. Elle utilise AJAX pour charger les parties de l'arbre à la demande. CategoryTree fut à l'origine écrite par Daniel Kinzler comme un outil externe et fut plus tard intégrée au logiciel MediaWiki avec l'aide de Tim Starling.

Installation

  • Téléchargez et placez le(s) fichier(s) dans un répertoire appelé CategoryTree dans votre dossier extensions/.
    Les développeurs et les contributeurs au code doivent à la place installer l'extension à partir de Git en utilisant:cd extensions/
    git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/CategoryTree
  • Ajoutez le code suivant à la fin de votre fichier LocalSettings.php  :
    wfLoadExtension( 'CategoryTree' );
    
  • Yes Fait – Accédez à Special:Version sur votre wiki pour vérifier que l'extension a bien été installée.

Utilisation

CategoryTree peut s'utiliser de trois manières :

  • directement sur les pages catégories,
  • en tant que "balise personnalisée" (ou "fonction d'analyseur") pour afficher une structure de catégorie en ligne sur une page wiki,
  • et comme page spéciale.

L'extension CategoryTree ajoute des widgets d'expansion aux sous-catégories listées sur les pages de catégorie.

Balise <categorytree>

Exemple. Voyez le résultat dans la boîte ci-dessous et sur la droite :

<categorytree mode="pages">Manual</categorytree>

La balise personnalisée est appelée <categorytree>. Par exemple, si vous écrivez <categorytree>Foo</categorytree> sur une page wiki, cela va afficher le contenu de la catégorie Foo sous forme d'arborescence dynamique sur cette page (voir l'exemple à droite). La balise accepte les attributs suivants, en utilisant une syntaxe de type HTML:

mode
détermine quelles pages apparaissent dans l'arborescence. Cet attribut peut être supplanté par l'utilisation de l'option namespaces. Valeurs possibles:
categories
affiche seulement les sous-catégories (constante de configuration 0)
pages
affiche les sous-catégories et les pages, à l'exception des images (constante de configuration 10), limité à 200 pages
all
affiche toutes les pages, sous-catégories, images, etc (constante de configuration 20)
parents
liste les catégories parentes à la place des sous-catégories (constante de configuration 100). Cela bascule CategoryTree dans l'opération "inverse" (pris en charge depuis la r36892, juillet 2008).
depth
détermine combien de niveaux de l'arborescence sont affichés au départ. La valeur par défaut est un (1). Zéro (0) signifie l'affichage du noeud racine uniquement. La valeur maximum dépend du mode spécifié, et de l'option $wgCategoryTreeMaxDepth (introduit entre r20410 et r20840, 30 mars 2007; totalement fonctionnel même avec $wgCategoryTreeDynamicTag depuis r36864, juillet 2008).
onlyroot
mettre cette option sur "on" pour n'afficher initialement que le noeud "racine" de l'arborescence. Équivaut à depth="0" (introduit dans r20385, 13 mars 2007). Obsolète depuis r36864, juillet 2008: remplacé par depth="0".
hideroot
mettre ceci à "on" pour cacher le noeud "racine" de l'arborescence, c.à.d hideroot=on. Par exemple, cela n'affichera pas le nom de catégorie Foo.
hideprefix
détermine quand le préfixe de l'espace de noms doit être caché dans les entrées de l'arborescence (depuis r36864, juillet 2008). Les valeurs possibles sont :
always
toujours masquer le préfixe. Ne doit être utilisé que si toutes les pages appartiennent au même espace de noms (constante de configuration 10).
never
ne jamais masquer le préfixe, pas seulement pour les catégories (constante de configuration 0).
auto
masquer le préfixe des catégories si seules les catégories sont affichées, comme avec mode="categories" (constante de configuration 30). Cela est équivalent à l'ancien comportement par défaut (avant juin 2008).
categories
toujours masquer le préfixe des catégories, mais afficher tous les autres préfixes (constante de configuration 20). C'est le nouveau comportement par défaut (depuis la rev:36864, juillet 2008).
showcount
quand il est mis à "on" c'est à dire showcount="on", on affiche le nombre d'entrées dans les sous-catégories (depuis r36864, juillet 2008). Cette option est désactivée par défaut dans les arborescences des catégories en ligne dans les pages, mais activée par défaut dans les listings des catégories et dans Special:CategoryTree.
notranslations
positionnez ceci sur "on" pour masquer toutes les pages de traduction correspondant aux pages appartenant à la catégorie, c'est-à-dire notranslations="on" (depuis Gerrit change 526234, novembre 2019). Ceci est désactivé par défaut. Lorsque cette option vaut "on", au lieu d'afficher les différentes traductions (par exemple : Page, Page/en, Page/fr, Page/de), seule la traduction standard "Page" est affichée et toutes ses traductions sont supprimées.
Cela n'affecte pas "showcount", donc il y a toujours un bogue.
namespaces
une liste d'espaces de noms desquels les pages doivent être affichées dans l'arborescence (depuis r36864, juillet 2008). Les entrées de la liste doivent être des noms d'espaces de noms séparés par des caractères espace. L'espace de nom principal peut être représenté par "-" ou "0". Les sous-catégories ne seront affichées seulement si l'espace de noms Category figure dans la liste.
class, style, id, etc
La balise ‎<categorytree> prend en charge tous les attributs HTML standards pour les éléments de bloc (depuis r36864, juillet 2008. Avant cela, seul l'attribut style était supporté).

Notes sur le paramètre 'namespaces'

Category est un espace de noms. Les catégories sont affichées dans tous les modes par défaut, mais en spécifiant le paramètre namespaces vous les masquez tout comme n'importe quelle autre espace de noms absent de la liste. Si vous voulez lister les pages d'un espace de noms particulier, y compris les pages des sous-catégories, ajoutez simplement Category à la liste des espaces de noms.

Exemple :

  • Lister les pages de l'espace de noms principal dans Category:Manual:
<categorytree mode="pages" namespaces="Main">Manual</categorytree>
  • Lister les pages de l'espace de noms principal et les sous-catégories dans Category:Manual:
<categorytree mode="pages" namespaces="Main Category">Manual</categorytree>

Le paramètre mode est écrasé par namespaces :

  • si seul l'espace de noms Category est demandé, il équivaut à mode=categories ;
  • si l'espace de noms des fichiers est présent dans la liste, cela impliquera mode=all ;
  • sinon mode=pages sera utilisé. Cela signifie que si la configuration du site n'a pas été modifiée, les éléments suivants sont équivalents (les deux premiers sont toujours équivalents, le troisième uniquement si $wgCategoryTreeDefaultMode est le CategoryTreeMode::CATEGORIES par défaut) :
<categorytree mode="categories">Manual</categorytree>
<categorytree namespaces="Category">Manual</categorytree>
<categorytree>Manual</categorytree>

Fonction d'analyse syntaxique {{#categorytree}}

Depuis la r25825 (13/9/2007), il est possible d'utiliser la syntaxe de la fonction analyseur pour placer une arborescence de catégorie sur une page. Cela fonctionne exactement comme la balise <categorytree> avec une syntaxe différente, par exemple {{#categorytree:Foo}}; les options peuvent être spécifiées en utilisant la syntaxe des paramètres nommés des modèles, par exemple {{#categorytree:Foo|hideroot|mode=pages}}.

Utiliser la syntaxe de la fonction d'analyse a l'avantage de permettre l'utilisation des mots magiques, de modèles et des paramètres de modèles pour spécifier la catégorie à afficher. Quelques exemples :

  • Utiliser une variable magique pour afficher l'arborescence des catégories de cette page (peut être utile sur les pages de description de catégorie) : {{#categorytree:{{PAGENAME}}}}.
  • Utiliser un modèle pour spécifier la catégorie : {{#categorytree:{{root category}}}} - le nom de la catégorie racine de l'arborescence sera défini par le contenu de la page Template:Root_category.
  • Utiliser un paramètre de modèle pour spécifier la catégorie, lorsque CategoryTree est utilisé dans un modèle : {{#categorytree:{{{1}}}}} dans Template:Baz peut être appelé en utilisant la syntaxe {{Baz|Foo}}

La page Special:CategoryTree

La page spéciale s'appelle Special:CategoryTree; là vous pouvez entrer le nom d'une catégorie puis parcourir son contenu.

Configuration

Certaines options peuvent être spécifiées dans le fichier LocalSettings.php  :

Vous ne pouvez plus utiliser les constantes CT_* dans LocalSettings.php. Utilisez 0 pour le mode de catégorie, 10 pour les pages, 20 pour tout, 100 pour les parents.
$wgCategoryTreeMaxChildren
nombre maximum d'enfants affichés dans un noeud de l'arborescence. 200 par défaut.
$wgCategoryTreeAllowTag
active la balise <categorytree>. true par défaut.
$wgCategoryTreeDynamicTag
charge dynamiquement le premier niveau de l'arborescence d'un <categorytree>. De cette façon, le cache n'a pas besoin d'être désactivé. false par défaut.
$wgCategoryTreeDisableCache
désactive le cache de l'analyseur syntaxique pour les pages contenant une balise <categorytree> ou fournit le temps de présence maximal en secondes dans le cache. Valeur 21600 par défaut, soit 6 heures.
$wgCategoryTreeUseCache
autorise le cache HTTP pour les utilisateurs anonymes. false par défaut.
$wgCategoryTreeOmitNamespace
masque le nom de l'espace de noms pour les pages et les catégories. false par défaut, les espaces de noms sont affichés sauf s'ils représentent seulement des catégories. Obsolète depuis la r36864 de juillet 2008 : remplacer par $wgCategoryTreeDefaultOptions['hideprefix'].
$wgCategoryTreeMaxDepth
un tableau définissant la profondeur maximale de chaque mode, dans lesquels l'arbre peut être développé initialement en utilisant le paramètre de profondeur dans une balise <category> . Par défault, est mis à 2 pour le mode « categories » , et à 1 pour les autres modes. Si par exemple vous voulez utiliser 3 pour les catégories et 2 pour les autres modes, vous pouvez utiliser $wgCategoryTreeMaxDepth = [10 => 2, 20 => 2, 0 => 3, 100 => 2];.
$wgCategoryTreeDefaultMode
le mode par défaut à utiliser quand aucun attribut de mode n'est spécifié dans une balise <categorytree> . Peut être 0 (catégories par défaut), 10 (pages), ou 20 (tout).
$wgCategoryTreeCategoryPageMode
mode à utiliser pour le rendu des arborescences sur les pages de catégories. Obsolète depuis la r36864, juillet 2008: remplacé par $wgCategoryTreeCategoryPageOptions['mode'] .
$wgCategoryTreeSidebarRoot
catégorie racine à utiliser pour intégrer l'arborescence des catégories dans la barre latérale (depuis la r36920, juillet 2008). S'il n'est pas défini, aucun arbre n'est intégré (c'est la valeur par défaut). L'intégration d'un CategoryTree dans la barre latérale ne fonctionne qu'avec les habillages basés sur SkinTemplate, c'est-à-dire Modern, Monobook, Chick, Simple et MySkin, mais pas Standard, Nostalgia ni CologneBlue. Ceci est actuellement cassé pour MediaWiki 1.35.1 et l'habillage Vector, voir phab:278306.
$wgCategoryTreeDefaultOptions
les options par défaut à appliquer, dans un tableau (depuis la r36864, juillet 2008). Les options disponibles sont décrites ci-dessus. Exemple: $wgCategoryTreeDefaultOptions['mode'] = 'pages';.
$wgCategoryTreeCategoryPageOptions
options à utiliser sur les pages de catégorie, dans un tableau (depuis la r36864, juillet 2008).
$wgCategoryTreeSpecialPageOptions
options à utiliser pour Special:CategoryTree, dans un tableau (depuis la r36864, juillet 2008).
$wgCategoryTreeSidebarOptions
options à utiliser pour l'affichage de l'arbre dans la barre latérale, dans un tableau (depuis la r36920, juillet 2008).

Messages système

categorytree-member-num

Par défaut, lorsque vous affichez des sous-catégories sur une page de catégorie, chaque sous-catégorie est suivie d'un nombre entier qui représente la nombre de sous-catégories sous-elle, combien de pages elle contient, et combien de fichiers se trouvent dans la catégorie (s'il y en existe) :

Mon nom de catégorie (5 C, 2 P, 1 F)

Vous pouvez modifier ce comportement en réécrivant le message système MediaWiki:Categorytree-member-num. Il a cinq paramètres :

Paramètre Signification
$1 Nombre de sous-catégories
$2 Nombre d'articles (sans les pages de catégories ni les pages de fichiers)
$3 Nombre de fichiers téléversés
$4 Nombre total de pages membre, y compris les pages de catégorie et les pages de fichiers
$5 Quelque chose comme ($1 C, $2 P, $3 F) sauf pour les éléments où le zéro est omis.

Plus précisément, une liste séparée par des virgules du nombre de pages (mediawiki:categorytree-num-pages), sous-catégories (mediawiki:categorytree-num-categories) et fichiers (mediawiki:categorytree-num-files) dans la catégorie, ou vide (mediawiki:categorytree-num-empty) dans le cas où la catégorie n'a pas de membres. Dans les versions antérieures à celles autour de 1.19 cette valeur était différente. Voir ancienne version de ces documents.

La valeur par défaut est ($5).

Conseil: utilisez l'extension ParserFunctions pour fournir la logique if/then/else pour l'affichage conditionnel des différentes parties. Par exemple :

{{#ifeq:$1|0||$1 categories}}

Une configuration pour gérer les virgules et les espaces lors de la sortie de toutes les informations :

version abbrégée :

({{#ifeq:$4|0|empty|{{#ifeq:$1|0||$1 C{{#ifeq:{{#expr:$3+$2}}|0||,}}}} {{#ifeq:$2|0||$2 P{{#ifeq:$3|0||,}}}} {{#ifeq:$3|0||$3 F}}}})

version nom complet :

({{#ifeq:$4|0|empty|{{#ifeq:$1|0||$1 categories{{#ifeq:{{#expr:$3+$2}}|0||,}}}} {{#ifeq:$2|0||$2 pages{{#ifeq:$3|0||,}}}} {{#ifeq:$3|0||$3 files}}}})

Résolution des problèmes

Wiki ne fonctionne plus après avoir installé CategoryTree

  • Ouvrez la déclaration d'erreur
  • Vérifiez que vous avez bien installé tous les fichiers
  • Assurez-vous que tous les fichiers de l'extension CategoryTree ont le mode de protection 644, et que le répertoire CategoryTree a bien 755.

Les options dans LocalSettings.php n'ont pas d'effet

  • Vérifiez d'avoir déclaré les options après avoir inclu l'extension.

<span id="Clicking_the__has_no_effect,_gives_a_JavaScript_error_or_just_sits_on_loading">

Pas d'action quand on clique sur , simplement une erreur JavaScript ou blocage sur loading

  • Notez que l'utilisation de la balise <categorytree> dans les messages système (espace de noms MediaWiki) peut ne pas fonctionner tel qu'attendu - c'est une mise en garde connue. Pour la contourner, voir Utiliser CategoryTree dans la barre latérale ci-dessous.
  • Assurez-vous que vous avez $wgUseAjax = true; dans votre LocalSettings.php avant d'inclure l'extension.
  • Assurez-vous d'utiliser la dernière version de l'extension - la partie sensible est à git:mediawiki/extensions/CategoryTree
  • Si vous utilisez 'rewrite rules or aliasing (par exemple pour avoir des "URL très courtes" - c'est-à-dire des pages wiki dans la racine du document ou peut-être une redirection vers une version www de l'URL demandée), assurez-vous d'avoir une exception en place pour le répertoire /extensions, comme vous le feriez pour le répertoire /skins. Voir aussi ci-dessous.

<span id="Clicking_the__shows_no_sub-categories_error">

Erreur no sub-categories lorsqu'on clique sur

  • Essayez de corriger cela en ajoutant le code suivant à LocalSettings.php : $wgCategoryTreeDefaultOptions['namespaces'] = [ 0, NS_CATEGORY, NS_FILE ];

Le navigateur affiche une erreur bad MIME type pour CategoryTree.js et/ou CategoryTree.css

  • Vérifiez que votre serveur web utilise les types Mime corrects pour les ficihiers .js et .css
  • Entrez les URLs directement dans le navigateur et voyez s'il affiche les pages, et non pas des pages d'erreur; particulièrement :
  • Si vous utilisez les règles de réécriture ou d'alias (rewrite rules or aliasing) (par exemple pour avoir des "URLs très courtes" - c'est à dire pour les pages wiki de la racine des documents), assurez-vous qu'il existe une exception prévue pour le répertoire /extensions , tout comme si vous le feriez pour le répertoire /skins .

<span id="Member_counts_are_wrong,_grey_arrows__are_shown_instead_of_">

Le nombre de membres est faux, les flèches grisées apparaissent au lieu de

Depuis MediaWiki 1.13, CategoryTree peut afficher le nombre des membres d'une catégorie, et peut afficher une flèche grise pour les noeuds de l'arborescence qui n'ont aucun enfant en fonction de ce nombre. Cette information s'appuie sur la nouvelle table category . Néanmoins, remplir cette table avec les valeurs actuelles ne fonctionne pas toujours quand vous passez à la version 1.13. Dans ce cas, exécutez le script de maintenance populateCategory.php , si nécessaire avec l'option --force.

<span id=" _toggles_shown_only_on_the_first_level_of_the_category_tree_view">

Sélecteurs affichés uniquement au premier niveau de l'affichage de l'arborescence des catégories

Dans le cas où vous n'obtenez qu'un niveau de profondeur lorsque vous visualisez l'arborescence, essayez de mettre dans le fichier modules/ext.categoryTree.styles.css la ligne suivante display: none; à display: inline !important;.

JavaScript essaie d'interpréter les types des balises en quelque chose de faux.

Note pour les utilisateurs de robots

Les robots et les scripts qui scrutent le HTML des pages de catégorie peuvent utiliser le paramètre notree dans l'URL pour forcer la sortie tradidionnelle. Néanmoins, le HTML produit n'est généralement pas stable, il est donc recommandé de modifier votre script et d'utiliser l'API pour récupérer les listings des catégories et similaires.

Message "Category Not Found"

Après que vous ayez implémenté le plugin de CategoryTree et ajouté le code pour afficher l'arborescence, si vous voyez un message disant Category Not Found (catégorie non trouvée), c'est que vous devez ajouter du contenu à vos pages de catégorie. Ces pages ne peuvent pas être principalement des pages rouges. Cliquez sur les noms de vos catégories, ajouter quelques textes dans les pages des catégories, et votre arbre devrait bien s'afficher.

L'affichage des 200 liens suivants ne fonctionne pas quand CategoryTree est installé

Assurez-vous que la bonne version de cette extension est installée, en fonction de la version du MediaWiki que vous avez. En particulier, les versions de cette extension faites pour les versions de MediaWiki avant la 1.17 ne sont pas compatibles avec MediaWiki 1.17 et les suivants, et va créer des problèmes où tous les liens des pages vers les pages des catégories seront cassés.

Aucune page ne s'affiche lorsqu'on utilise le paramètre "namespaces"

Voir ci-dessus.

Bidouilles

Utiliser CategoryTree dans les messages système et les habillages personnalisés

Dans les versions plus anciennes de CategoryTree, vous devez modifier le code pour que cela fonctionne : trouvez la fonction efCategoryTreeParserOutput dans le fichier CategoryTree.php, et supprimez la condition; par exemple cela pourrait ensuite ressembler à ceci :

function efCategoryTreeParserOutput( &$outputPage, &$parserOutput )  {
    CategoryTree::setHeaders( $outputPage );
    return true;
}

Utiliser CategoryTree dans la barre latérale

Utiliser JavaScript

Depuis la r36920 (juillet 2008) avec MediaWiki 1.13 (r36917), vous pouvez intégrer un CategoryTree dans la barre latérale simplement en initialisant $wgCategoryTreeSidebarRoot à la catégorie que vous voulez utiliser à la racine. Ceci ne fonctionne qu'avec les habillages basés sur SkinTemplate, c'est à dire les habillages Modern, Monobook, Chick, Simple, et MySkin, mais pas les Standard, Nostalgia ni CologneBlue.

Si vous voulez mettre CategoryTree ailleurs dans la barre latérale, vous pouvez la référencer sur MediaWiki:Sidebar en tant que « categorytree-portlet » .

Pour les versions plus anciennes de CategoryTree et/ou de MediaWiki, vous devez installer une modification sur MonoBook.php pour activer le wikicode normal dans la barre latérale, voir Wikicode de la barre latérale --DJ 19:26, 24 January 2008 (UTC)

Pour ajouter un lien « CategoryTree » à la (barre latérale ) de votre boîte à outils ajoutez le code suivant à la page javascript (par exemple monobook.js) de votre habillage et personnalisez l'URL «w:Special:CategoryTree» .

function AppendCategoryTreeToSidebar() {
    try {
        var node = document.getElementById( "p-tb" )
                           .getElementsByTagName('div')[0]
                           .getElementsByTagName('ul')[0];
 
        var aNode = document.createElement( 'a' );
        var liNode = document.createElement( 'li' );
 
        aNode.appendChild( document.createTextNode( 'CategoryTree' ) );
        aNode.setAttribute( 'href' , '[[w:Special:CategoryTree]]' );
        liNode.appendChild( aNode );
        liNode.className = 'plainlinks';
        node.appendChild( liNode );
    } catch(e) {
        // lets just ignore what's happened
        return;
    }
}
 
addOnloadHook( AppendCategoryTreeToSidebar );

Une version plus générique de ce code se trouve sur Manual:Interface/Sidebar#content of sidebar and toolbox (javascript) .

Pas à pas si tout se passe bien :

$wgCategoryTreeSidebarRoot = 'Category:article_name';

Utiliser les pages de MediaWiki:EspaceDeNoms

Si vous voulez créer un lien vers le Categorytree générique (affiché comme arborescence des catégories) lorsque vous n'êtes pas sur une page de catégorie, et vers une Categorytree particulière (affichée comme vue de l'arborescence des catégories, avec foo étant le nom de la catégorie que vous visualisez) lorsque vous êtes sur une page de catégorie :

  • Ajoutez à votre MediaWiki:Sidebar (juste au-dessus de SEARCH est un bon endroit) une ligne, ** sidebarcategorytree-url|sidebarcategorytree
  • Créez un [[MediaWiki:Sidebarcategorytree]] avec, par exemple : {{#ifeq: {{NAMESPACE}}|Category|View as category tree|Category tree}}
  • Créez un [[MediaWiki:Sidebarcategorytree-url]] avec, par exemple : {{#ifeq: {{NAMESPACE}}|Category|Special:CategoryTree/{{BASEPAGENAME}}|Special:CategoryTree/Categories}}

See also