Générateur de sommaire dans une page web

Ce script fonctionne localement ou directement sur un serveur et construit un menu statique à partir des titres et sous-titres dans une page HTML. Il évite ainsi un travail fastidieux.

Pour chaque titre il génère un identifieur ou prend en compte l'identifieur éventuellement existant, puis il construit un menu hiérarchique à partir des titres et place dans le menu les liens sur les sections de la page.

Il est possible de modifier ultérieurement la structure de la page et mettre à jour automatiquement le menu.

Utilisation

La syntaxe scriptol est:

solp automenu [-hn] [chemin]nomdefichier

La syntaxe PHP

php automenu.php [-hn] [chemin]nomdefichier

L'option correspond au niveau de hiérarchie à prendre en compte pour construire le menu, par défaut le niveau le plus profond est h3, et on peut spécifier de h2 à h6.

Personnalisation

Le menu est présenté dans un fieldset avec pour légende "Summary". Vous pouvez modifier cette légende par défaut en changeant la valeur de la variable legend dans le code source Scriptol:

text legend = "Summary"

Dans le code PHP:

$legend="Summary";      

Pour aller plus loin, remplacer par exemple le fieldset par un calque ou lui associer des attributs, il faudra éditer le code dans la fonction main.

Fonctionnement

La création du menu passe par les étapes suivantes:

  1. Scan de la page pour identifier les numéros déjà utilisé, afin de ne pas réutiliser un numéro déjà en cours pour la génération d'identifieur.
  2. Un identifieur est généré et ajouté à chaque titre.
  3. Les titres sont extraits de la page et placés dans un tableau.
  4. A partir de ce tableau, le script construit un menu hiérarchique et indenté, avec des liens sur les sections de texte.
  5. Ce menu est placé après la balise <h1>. Vous pouvez ensuite le placer manuellement où vous voulez dans la page.
  6. Lors d'une mise à jour, le menu est modifié dans le même emplacement.

Conditions et limitations

Pour un meilleur résultat, la page doit être bien formée avec une hiérarchie de titles <h1>, <h2>, <h3>, etc. conforme à leur destination.
Le résultat sera aléatoire si l'on utilise ces balises dans les panneaux latéraux, ou pour d'autres usages que la structuration sémantique, ce qui est une pratique à déconseiller.

Les identifieurs doivent avoir le nom de balise en préfixe. Par exemple h221, h322, etc... C'est indispenable pour une indentation correcte. Ces noms sont générés automatiquement par le logiciel sauf si un identifieur existe déjà.

Licence et crédit

Le script écrit par Denis Sureau est sous licence GPL 3.0

Le script utilise le parseur HTML, Simple HTML parser de Jose Solorzano (https://sourceforge.net/projects/php-html/). Ce parseur est sous licence MIT.

Télécharger

Téléchargement ici: