Tags comme mots-clés : pages d'index et articles liés par tags #49

Open
opened 2026-05-13 22:10:09 +00:00 by cedricAbonnel · 0 comments
Owner

Contexte

Les tags saisis par article (ex. type « Logiciels » → valeurs « Home Assistant », « Zigbee2MQTT »…) forment un vocabulaire contrôlé qui n'est pas encore exposé aux lecteurs. Il existe deux moyens de le valoriser.

Feature 1 — Pages d'index par tag

Créer des URLs publiques permettant de naviguer par mot-clé :

URL Contenu
/mots-cles Vue d'ensemble de tous les types de tags et leurs valeurs (nuage ou liste)
/mots-cles/{type} Toutes les valeurs du type, avec le nombre d'articles pour chacune
/mots-cles/{type}/{valeur} Liste des articles tagués avec cette valeur (ex. /mots-cles/logiciels/home-assistant)

Ces pages sont publiques (indexables). Les articles masqués ou dans des catégories privées sont exclus.

Le slug de la valeur dans l'URL est normalisé (minuscules, tirets à la place des espaces).

Feature 2 — Articles liés par tags dans la sidebar

Amender la section « À lire aussi » de post_view.php pour intégrer les tags comme signal de proximité :

  • Un article partageant ≥ 1 tag de même type et valeur est considéré comme proche.
  • Stratégie de classement proposée : tags communs (poids fort) > similitude de titre (poids moyen) > même catégorie (poids faible).
  • La limite reste 5 articles max.

Actuellement $alsoReadArticles est construit à partir de scorePool() sur les mots du titre + même catégorie. Il faudra ajouter un score tag-overlap en amont.

Fichiers concernés

Feature 1

  • public/index.php — ajouter les cases mots-cles, mots-cles/{type}, mots-cles/{type}/{valeur}
  • templates/tag_index.php — nouveau template (vue d'ensemble)
  • templates/tag_type.php — nouveau template (valeurs d'un type)
  • templates/tag_value.php — nouveau template (articles d'une valeur)
  • src/ArticleManager.php — méthode getArticlesByTagValue(type, value) et getAllTagValueCounts(type)

Feature 2

  • public/index.php — enrichir la construction de $alsoReadArticles (autour de la ligne 652) avec un score de chevauchement de tags

Point ouvert

Le slug de la valeur dans l'URL peut collisionner si deux valeurs distinctes normalisées donnent le même slug (ex. « C++ » et « C »). Prévoir un fallback ou rejeter la navigation par slug pour les valeurs ambiguës.


Migré depuis varlog#64

## Contexte Les tags saisis par article (ex. type « Logiciels » → valeurs « Home Assistant », « Zigbee2MQTT »…) forment un vocabulaire contrôlé qui n'est pas encore exposé aux lecteurs. Il existe deux moyens de le valoriser. ## Feature 1 — Pages d'index par tag Créer des URLs publiques permettant de naviguer par mot-clé : | URL | Contenu | |-----|---------| | `/mots-cles` | Vue d'ensemble de tous les types de tags et leurs valeurs (nuage ou liste) | | `/mots-cles/{type}` | Toutes les valeurs du type, avec le nombre d'articles pour chacune | | `/mots-cles/{type}/{valeur}` | Liste des articles tagués avec cette valeur (ex. `/mots-cles/logiciels/home-assistant`) | Ces pages sont **publiques** (indexables). Les articles masqués ou dans des catégories privées sont exclus. Le slug de la valeur dans l'URL est normalisé (minuscules, tirets à la place des espaces). ## Feature 2 — Articles liés par tags dans la sidebar Amender la section « À lire aussi » de `post_view.php` pour intégrer les tags comme signal de proximité : - Un article partageant ≥ 1 tag de **même type et valeur** est considéré comme proche. - Stratégie de classement proposée : tags communs (poids fort) > similitude de titre (poids moyen) > même catégorie (poids faible). - La limite reste 5 articles max. Actuellement `$alsoReadArticles` est construit à partir de `scorePool()` sur les mots du titre + même catégorie. Il faudra ajouter un score tag-overlap en amont. ## Fichiers concernés **Feature 1** - `public/index.php` — ajouter les cases `mots-cles`, `mots-cles/{type}`, `mots-cles/{type}/{valeur}` - `templates/tag_index.php` — nouveau template (vue d'ensemble) - `templates/tag_type.php` — nouveau template (valeurs d'un type) - `templates/tag_value.php` — nouveau template (articles d'une valeur) - `src/ArticleManager.php` — méthode `getArticlesByTagValue(type, value)` et `getAllTagValueCounts(type)` **Feature 2** - `public/index.php` — enrichir la construction de `$alsoReadArticles` (autour de la ligne 652) avec un score de chevauchement de tags ## Point ouvert Le slug de la valeur dans l'URL peut collisionner si deux valeurs distinctes normalisées donnent le même slug (ex. « C++ » et « C »). Prévoir un fallback ou rejeter la navigation par slug pour les valeurs ambiguës. --- *Migré depuis [varlog#64](https://git.abonnel.fr/cedricAbonnel/varlog/issues/64)*
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: cedricAbonnel/folio#49