Table des matières auto-générée dans les articles #29

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

Description

Ajout d'une table des matières (TOC) auto-générée dans la sidebar des articles.

Fonctionnalités

  • Génération côté PHP depuis les titres H2/H3 du contenu rendu
  • Injection d'un id sur chaque titre (slug lisible, accents translittérés, déduplication)
  • Affichage dans la sidebar si l'article contient ≥ 3 titres
  • Les H3 sont indentés visuellement
  • Sidebar défilable (max-height: 100vh) pour que la TOC reste toujours visible
  • Surlignage du chapitre courant au défilement via IntersectionObserver
  • Boutons ↑ Haut et ↓ Bas de page en bas de la sidebar (tous articles)
  • Scroll fluide (behavior: smooth)
  • Script JS externalisé (/assets/js/toc.js) pour respecter la CSP script-src 'self'
  • Fix sticky sidebar : align-self: stretch pour que la colonne suive le défilement

Commits

  • bfc8713 feat: table des matières auto-générée
  • dca653b fix: JS externe (CSP)
  • 11dce45 fix: sidebar sticky
  • 0a44ab9 feat: boutons haut/bas de page

Migré depuis varlog#40

## Description Ajout d'une table des matières (TOC) auto-générée dans la sidebar des articles. ## Fonctionnalités - Génération côté PHP depuis les titres H2/H3 du contenu rendu - Injection d'un `id` sur chaque titre (slug lisible, accents translittérés, déduplication) - Affichage dans la sidebar si l'article contient ≥ 3 titres - Les H3 sont indentés visuellement - Sidebar défilable (`max-height: 100vh`) pour que la TOC reste toujours visible - Surlignage du chapitre courant au défilement via `IntersectionObserver` - Boutons **↑ Haut** et **↓ Bas** de page en bas de la sidebar (tous articles) - Scroll fluide (`behavior: smooth`) - Script JS externalisé (`/assets/js/toc.js`) pour respecter la CSP `script-src 'self'` - Fix sticky sidebar : `align-self: stretch` pour que la colonne suive le défilement ## Commits - `bfc8713` feat: table des matières auto-générée - `dca653b` fix: JS externe (CSP) - `11dce45` fix: sidebar sticky - `0a44ab9` feat: boutons haut/bas de page --- *Migré depuis [varlog#40](https://git.abonnel.fr/cedricAbonnel/varlog/issues/40)*
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: cedricAbonnel/folio#29