Konk_Gwin

Hugo 5 - Comment gérer les affinités

Étiquettes:
Citation finale de:
Logiciels évoqués:

Hugo sait gérer les affinités ou Related Content. Cette gestion se réalise par l’entremise des métadonnées des billets comme les étiquettes (tags), les catégories, les dates (date, lastmod, …) ou toute autre clé d’indexation.


Créer le partial « related.html »

D’abord je teste en recopiant l’exemple fournit (https://gohugo.io/content-management/related/#list-related-content) et créant layouts/partials/related.html.

 {{ $related := .Site.RegularPages.Related . | first 5 }}
 {{ with $related }}
 <h3>See Also</h3>
 <ul>
     {{ range . }}
       <li><a href="{{ .RelPermalink }}">{{ .Title }}</a></li>
     {{ end }}
 </ul>
 {{ end }}

J’y réalise des modifications minimes :

  • ajout d’une ligne horizontale avec <hr>
  • modification de la ligne <h3>See also</h3> par <h2>On pourra aussi consulter</h2>

Pour l’instant, je laisse le first 5 tel que, car mon site est naissant et ce nombre de billets me convient.

Le référencer dans le partial « single.html »

Ensuite, je rajoute dans layouts/_default/single.html l’appel au partial

<aside> 
    {{ if .Params.toc }} {{ partial "toc.html" . }} {{ end }}
    {{ partial "related.html" . }}
</aside>

La modification de single.html est nécessaire puisqu’on travaille au niveau du billet et non des listes.

Cela fonctionne étonnament bien.

Mise en place d’une intemporalité des affinités

Modifier config.yaml

Je souhaiterais cependant obtenir une intemporalité des affinités. En effet, par défaut, les affinités ne concernent que les billets précédents.
Pour l’obtenir, il faut toucher au fichier config.yaml (voir https://gohugo.io/content-management/related/#default-configuration). J’ajoute le paramétrage fournit :

 related:
   includeNewer: false
   indices:
   - name: keywords
     weight: 100
   - name: date
     weight: 10
   threshold: 80
   toLower: false

Le passage à l’intemporalité nécessite de revoir les index

Je passe includeNewer à true pour avoir l’ensemble des billets en relation et non pas uniquement ceux qui sont antérieurs au billet affiché.

Et là plus rien ne marche…

Il faut remplacer

  indices:
  - name: keywords

par

  indices:
  - name: tags

On peut aussi ajouter d’autres indices, jouer avec leur poids respectif, voire modifier le niveau de seuil. On pourra consulter « Related Content in Hugo ».
Quant à moi, je préfère le faire simple. Mais…

Comment affiner les affinités (sic)

Il y a effectivement un mais. J’ai un article sur QGIS qui fait référence à HUGO, puisqu’il y s’agit de mettre sous HUGO une carte générée par qgis2web. Si dans les étiquettes (tags) de ce billet sur QGIS je laisse "hugo", alors, dans les affinités, j’ai l’ensemble des billets sur HUGO, ce qui ne me semble pas judicieux.
Il me faut donc gérer d’autres clés d’accès.

Ajouter une clé d’indexation

De manière originale, j’ajoute donc keywords dans les métadonnées des billets. Comme expliqué dans un précédent billet, il va me falloir non seulement mettre à jour mes billets concernés (pour l’instant je n’en ai que deux), mais aussi modifier mon fichier archetypes/default.md. J’y ajoute la ligne

keywords: []

Je vais mettre en affinité le billet QGIS concerné avec mon premier billet sur HUGO, avec le mot clé

keywords: ["qgis2web"]

Il faut aussi que dans les étiquettes du billet QGIS, je n’oublie pas d’enlever "hugo".

Finaliser le fichier config.yaml

Voici ma portion de config.yaml modifiée dans ce cadre :

related:
  includeNewer: true
  indices:
  - name: keywords
    weight: 100
  - name: tags
    weight: 80
  - name: date
    weight: 10
  threshold: 80
  toLower: false

On voit que j’ai choisi que les liens keywords soient les plus forts. Suivent ensuite les liens par les étiquettes (tags) et enfin par la date de création du billet (date).

Et ça marche !


———- La citation :

C’est la terre ouverte
La terre minutieuse
La terre flagrante
Avec ses massifs de luxuriance fougueuse
Et ses falaises d’innocence

Annie Le Brun « Ici j’ai bu l’eau du robinet » (extrait) in Annulaire de Lune Éditions Maintenant, Paris 1977


Menu