La gestion par catégorie est une méthode d’organisation très connue qui a fait ses preuves. Cependant, les catégories représentent un système de classification parmi d’autres. Parfois, il peut être nécessaire d’isoler notre système de classification nommé « catégorie », d’un autre système de classification. Si nous prenons le cas d’un site web partageant des analyses de films et les compétences techniques de l’auteur du site web dans le cinéma, nous pouvons être face à un dilemme d’organisation. Faut-il utiliser deux catégories « analyse » et « compétence technique » avec de nombreuses sous-catégories ? Ou créer deux systèmes de classification pour gérer ces sujets de manière isolée avec :
En prenant le chemin de la création de ces deux systèmes de classifications (Taxonomies), il nous serait possible de gérer ces thèmes bien plus simplement.
Le choix d’utilisation de la taxonomie proposé par défaut « Catégorie » ou la création de vos propres taxonomies vous revient. Ce choix doit être réfléchi, car il est très important pour la structure de votre site sur le long terme.
Il n’y a pas de règle quant à l’utilisation des taxonomies. En général, on les utilise afin d’éviter de rendre le système des catégories et des sous catégorie trop complexe. Cela nous permet de séparer et isoler les thèmes abordés sur le site. On peut nommer une taxonomie comme on le souhaite :
On peut aussi utiliser des noms ressemblant à un terme de catégorie afin d’isoler complètement le l’univers abordé du système par défaut « Catégorie ».
Quand vous créez un site avec Hugo. Ce framework se charge de créer deux taxonomies par défaut :
La taxonomies « Categories » est le système de classification des articles que l’on connait tous. La taxonomies « tags » est une méthode d’organisation sans hiérarchie qui permet de regrouper certains contenus de catégorie très différente pour un terme précis.
Pour créer vos propres taxonomies, vous devrez les définir dans le fichier de configuration générale disponible à la racine du dossier de votre site « config.toml ». Dans ce fichier vous pourrez insérer les lignes suivantes afin de créer une taxonomie. Ici je vais nommer la nouvelle taxonomie : « Genre ».
taxonomies:
genre: genre
On crée ainsi l’identifiant de taxonomie « genre » nommé « genre ». Attention toute de même, en définissant vos propres taxonomies, les taxonomies par défaut ne sont plus prise en compte. Si vous désirez les garder, il faudra les déclarer avec votre nouvelle taxonomie :
taxonomies:
genre: genre
category: categories
tag: tags
Il existe deux méthodes pour ajouter un terme de taxonomie à un site web avec Hugo. La première consiste à ajouter le terme directement dans le front matter (zone des méta données) de l’article concerné. Et l’autre méthode consiste à définir globalement l’existence de ce terme sur l’ensemble du site. Les deux méthodes peuvent être utilisées indifféremment ou ensemble. Il existe cependant une toute petite nuance si vous décidiez d’utiliser une méthode plutôt qu’une autre.
Pour ajouter un terme de taxonomie dans un article, il suffit d’inscrire l’identifiant de la taxonomie et la valeur du terme dans le front matter de cet article :
---
title: "Titre de l'article"
genre: ["fiction"]
---
Dans cet exemple, j’ai défini le terme « fiction » appartenant à la taxonomie « genre ». Cette façon de faire présente deux particularités :
Pour configurer un terme dans le fichier de configuration principale, toujours avec l’exemple genre :
[taxonomies]
genre = ["fiction"]
Cette façon de faire présente une différence notable. Lors de la récupération de la liste des termes de la taxonomie « fiction », vous obtiendrez ce terme même si n’est assigné à aucun article.
Pour ajouter un champ personnalisé à un terme ou une taxonomie. Vous devrez créer un répertoire respectant l’architecture de l’URL pointé par votre terme ou votre taxonomie. Par exemple, si nous nous rendons dans le terme : monsite.loc/genre/fiction, dans le dossier content, nous devrons créer un dossier genre, puis un sous dossier « fiction » où nous pourrons créer un fichier _index.md
avec comme front matter un champ description avec votre description :
---
title: "le nom du terme"
description: "une description pour votre terme"
---