Gérer et lister les catégories d’un site web avec Hugo


Configurer et exploiter les catégories d’un site web est généralement évident pour la plupart des CMS. Mais avec Hugo, vous devrez comprendre quelques concepts avant de pouvoir réellement réussir cette tâche.

Ajouter des catégories

L’ajout d’une catégorie consiste à assigner directement la ou les catégories dans le front matter (la zone des métadonnées) de l’article ciblé.

---  
title = "Terre"  
date = 2023-03-10T00:00:00+01:00  
draft = true  
categories = ["planète", "système solaire"]  
---

Contenu de l'article ici.  

Cette façon de faire est très simple et permet de gérer un grand nombre de catégories sans rendre la gestion complexe à l’avenir. C’est la méthode la plus conventionnelle pour gérer les catégories.

Deplus Hugo s’occupera automatiquement de la transformation des accents et espaces afin de produire des URL propres.

Attention cependant à utiliser les termes exacts pour assigner une catégorie sur plusieurs articles au risque de créer des catégories distinctes (ex.: planète et planètes).

Configuration d’une catégorie

Il est possible de prédéfinir une catégorie et de la configurer plus finement qu’avec une simple assignation dans un article. Cela permet aussi de rendre existante cette catégorie même si elle n’est liée à aucun article.

Pour cela il est important de comprendre que les catégories existantes utilisent une URL par défaut avec Hugo. Pour notre planète, l’URL monsite.fr/categories/planète/ sera réservée à cette catégorie.

À partir de là, vous pouvez personnaliser la catégorie en créant un fichier spécial  _index.md utilisant la même URL

hugo new categories/planete/_index.md  

Hugo comprendra que ce fichier, utilisant la même URL que la catégorie existante, deviendra le fichier de configuration de cette catégorie.

Voici un exemple de configuration du fichier _index.md :

---  
title = "Les Planètes"  
description = "Description de la catégorie"  
---  

De cette manière, j’ai configuré mon propre titre de catégorie attaché à « planètes » et ajouté un nouveau champ « description » que je pourrais exploiter plus tard.

Lister les catégories et leurs descriptions

Pour lister les termes des catégories ainsi que leurs champs personnalisés « description » il est possible d’utiliser deux méthodes.

Méthode simple : Lister les termes en tant que pages

Dans votre template (layouts/_default/home.html)

Vous pouvez créer une boucle avec un filtre pour parcourir un dossier de contenu précis de votre site. Dans notre cas nous parcourrons le dossier catégories :

{{ range where .Site.Pages "Section" "categories" }}  
{{ .Params.Title }}  
{{ .Params.Description }}  
{{ end }}  

Ainsi, pendant le parcours, nous accédons à tous les fichiers index.md des catégories dons les paramètres sont exploitable à l’aide de la variable .Params.(Paramètre).

Il faut savoir que cette méthode parcourt uniquement le dossier catégorie. Elle ne parcourt pas les informations de catégorie présentes dans les métadonnées des articles créés. En résumé cette technique est simple et utile pour lister toutes les catégories d’un site sans chercher de liens avec les articles.

Méthode avancée : Lister les termes en faisant la correspondance avec leurs pages.

Il est possible de lister les différents termes de catégorie en allant les chercher depuis les métadonnées des articles, puis de rechercher le fichier de configuration index.md à l’aide de chaque nom de termes trouvé. Dans ce cas, il nous faudra utiliser deux boucles de parcours :

{{ range $cat,$page := .Site.Taxonomies.categories }}  
  {{ with site.GetPage $cat }}  
    {{ .Title }}  
    {{ .Description }}  
    {{ .LinkTitle }}  
    {{ .RelPermalink }}  
  {{ end }}  
{{ end }}  

Avec cette méthode un peu plus complexe, vous pouvez récupérer des paramètres spéciaux propres aux moteurs de catégories du Framework Hugo.