Table des Matières

Ajoute des ancres en fonction des intertitres et fournit une balise pour afficher la « table des matières » d’un article - autrement dit un « sommaire » -.

Objectif

L’objectif de ce plugin est d’ajouter des ancres html calculées en fonction du texte de l’intertitre, et de fournir une balise pour afficher la "table des matières" d’un article (contenu de #TEXTE)

Fonctionnement

Les intertitres ( notés {{{intertitre}}} ) seront transformés en <h3 class="spip"><a name="intertitre"></a>intertitre <a href="tdm"><img ... /></a></h3>

Le contenu de l’attribut name est calculé selon une méthode approchant celle des urls propres de spip. Aussi un intertitre {{{ceci est un intertitre spécial}}} sera transforme en <h3 class="spip"><a name="ceci-est-un-intertitre-special"></a>ceci est un intertitre spécial</h3>

Chaque intertitre est mémorisé avec son ancre correspondante pour être reproduite dans la balise #TABLE_MATIERES

Installation

Télécharger l’archive ci-joint, puis décompresser le fichier. Copier ce répertoire tables_matieres dans le répertoire « plugins » de votre site spip. Alternativement, vous l’aurez trouvé dans l’interface de chargement automatique de SPIP, il se trouve alors dans plugins/auto

Table des Matières (2.4.0)

Configuration

Le plugin dispose d’un menu de configuration qui permet de choisir :

  • si la table des matières doit s’insérer automatiquement ou via l’appel de la balise
    #TABLE_MATIERES
  • A partir de combien d’intertitres minimum, il faut générer la table des matières
  • Le format des ancres générées
  • ....

Utilisation

Les intertitres seront calculés automatiquement. Pour afficher la table des matières, ajouter la balise #TABLE_MATIERES dans votre squelette à l’intérieur d’une boucle ARTICLES.

#TABLE_MATIERES affichera les ancres de la manière suivante par défaut :

<div id="tdm" class="divers">
	<h2 class="menu-titre">Table des matières</h2>
	<ul>
		<li><a href="#intertitre-1">intertitre-1</a></li>
		<li><a href="#intertitre-2">intertitre-2</a></li>
		<li><a href="#intertitre-3">intertitre-3</a></li>
	</ul>
</div>

Ce qui est un modèle CSS connu puisque tout proche de celui des noisettes de la barre de navigation des squelettes par défaut de SPIP.

Notez la présence d’un noeud DOM #tdm pour permettre l’aller/retour entre la table et les intertitres par simple clic, personnaliser l’habillage en CSS ou jouer avec la table en jQuery.

Personnalisation

Il est possible de personnaliser le modèle fourni en surchargeant le fichier modeles/tables_matieres.html

Prérequis

Ce plugin nécessite une version de SPIP récente (révision minimum : 9738, introduction de la balise #FOREACH)

Dernière modification de cette page le 13 février 2019

Discussion

24 discussions

  • 1

    Bizarre, mais :
    -  soit le sommaire est « généré automatiquement » et alors il y a bien les ancres sur les h3 mais la table des matières n’apparaît pas
    -  soit le sommaire est généré et placé avec #TABLE_MATIERE et alors il n’y a plus d’ancres sur les h3 ! (par contre la tdm apparait bien)...

    ...sur uune spip 2.1.2

    • j’ai finalement trouvé une config ’automatique’ qui donne tdm et liens,... mais la tdm n’est pas à l’endroit souhaité.

      C’est peut être que TDM et #TEXTE ne sont pas dans la même noisette.

    Répondre à ce message

  • 1

    Hello !

    Super plugin que j’utilise de manière assez généralisée à dire vrai seulement j’ai quand même un petit soucis avec lui, c’est la génération forcée de titre h3.spip

    En effet, j’utilise la BTE de porte plume et j’avais, suivant quelques recommandations d’accessibilité, arbitrairement décrété que dans mon site, les {{{titre}}} me génèreraient du <h2 class="h2">titre</h2>

    Ya t’il un moyen d’intervenir sur cette génération de manière à ce qu’elle ne rentre pas en conflit avec la BTE ? J’ai regardé un peu le code mais je ne trouve pas à quel endroit jouer du bigniou pour que ca marche à peu près comme je veux... :-x

    Merci pour tout retour ;)

    • Ça me génère avec :

      $GLOBALS['debut_intertitre'] = '<h2 class="spip">';
      $GLOBALS['fin_intertitre'] = '</h2>';

      Des :

      1. <h2 class="h3 spip"> ... </h2>

      Ça semble correct (avec Zpip)

    Répondre à ce message

  • Je viens d’effectuer quelques modifications du plugin (version 1.1)

    • correction pour (re)prendre en compte le nombre minimal d’intertitre
    • éviter le fichier options en utilisant un pipeline prévu par SPIP 2 (nécéssite donc maintenant SPIP 2.0) (La version 1.0 précédente utilisable en 1.9.2 est tagguée ici : http://zone.spip.org/trac/spip-zone/browser/tags/table_matieres-1.0 , un zip sera créé également)

    Répondre à ce message

  • 1

    Bonjour,

    Cette magnifique contrib comporte 2 bugs (SPIP 2.1.1) :

    1. la table des matières apparaît en double, générée deux fois ;
    2. le nombre mini d’intertitres pour que la table des matières apparaisse (configurable via CFG) n’est pas pris en compte : dès qu’un intertitre est présent, la table des matières est générée.

    C’est vraiment dommage car cette contrib est la plus aboutie dans sa catégorie !

    • Matthieu Moy

      Pour l’affichage en double, j’ai pareil, mais en fait, c’est que contrairement à ce que dit l’article, même si on n’a pas de #TABLE_MATIERE, la table est générée en début d’article. Si je met un #TABLE_MATIERE dans mon squelette, j’en ai deux !

    Répondre à ce message

  • 2

    Bonjour

    En version SPIP 2.0, la noisette des matieres est chargée automatiquement dans toutes boucles artciles faisant appel à #TEXTE

    Comment peux ton le desactiver au cas par cas ?

    Cas d’utilisation, une page sommaire qui liste afficher les X derniers articles.

    Répondre à ce message

  • j’ai voulu désactiver table des matières, car à l’usage, ca ne me semblait pas pertinent sur un site aux articles courts, et malgré mon paramétrage à 4 titres, il continue à se déclencher pour 1 seul titre..

    surprise, en désactivant, j’ai plein d’erreur d’affichage bizarres..

    y-a-t-il une procédure particulière pour le faire ???

    pam

    Répondre à ce message

  • 2

    Je viens de remarquer que l’activation de la TDM provoque l’apparition dans le portfolio de tous les documents de l’article, qui n’y figurent pas sans la TDM. Les {doublons} ont donc sauté...

    • le texte est traité par propre() deux fois. Est-ce que ça peux venir de là ?

    • Je viens de rétablir les doublons, en insérant plus finement le code de la TDM dans les traitements. Toutefois ça marche en local ... mais pas en ligne, il reste donc un peu de boulot pour s’assurer que c’est bien compatible partout.

    Répondre à ce message

  • 2

    je l’utilise sur http://blog.mondediplo.net/2007-11-...

    est-il possible de faire que ça fonctionne si on ne démarre pas par un {{{intertitre}}} ? ça permettrait d’éviter de répéter le titre de l’article

    • J’imagine que oui, sans doute. C’est déjà conditionné par le nombre d’intertitres présent dans le texte, nombre qui est paramétrable.

      il faudrait que le #TEXTE ne commence pas par {{{ ?

    • Ahhh, c’est ça ! J’avais mal compris : comme j’avais remarqué la disparition de la TDM quand j’enlevais le premier intertitre, je croyais que c’était parce qu’il fallait commencer par un inter ; mais en fait c’est parce qu’il n’en restait plus que deux. Donc ça répond à ma question :)

    Répondre à ce message

  • 4

    S’lt

    J’essaye d’utiliser TDM (recupéré ce jour sur http://files.spip.org/spip-zone/) sur une SPIP 1.9.2a [8878]

    Or je n’ai pas encore mis de #TABLE_MATIERES dans mon squelette et pourtant je constate des coté affichage public :

    Table des matières
    {TDM}

    Dans mon cas, je souhaite compliquer le truc en passant par un modele article_tdm.html. Ceci pour que les redacteurs puissent choisir les articles à TDMisé.
    Et pareil j’obtiens le meme affichage bizarre.

    • Salut,

      En bas de l’article, je précise les prérequis pour utiliser cette contrib (version de developpement, revision minimum, utilisation de la balise #FOREACH) :)

    • S’lt

      Merci pour l’info, en fait c’est au moins SPIP 192c (soit svn 10268).
      Toujours le pb des correspondances entre svn et version officielle :)

    • Non, c’est pas dans la branche 1.9.2. c’est pour une version de développement (1.9.3 svn quoi, si tu préfères)

    • Bizarre, je ne suis qu’en versions « officielles », et je suis sur de l’avoir utilisée sur une 1.9.2(a ou b).
      Et aujourd’hui : impossible d’avoir l’affichage correct : juste le TDM !

      Pourtant je n’avais pas modifié les squelettes (pas de balise #TABLE_MATIERE ), et j’ai vérifié qu’il n’y a aucune modif du source « table-des-matières » depuis le 6 IX 2007.

      Encore un « mystere de l’informatique » je suppose..
      Yx

    Répondre à ce message

  • 7

    Je note ceci pour ne pas oublier car je n’aurais pas le temps de creuser le problème dans les jours à venir.

    Je ne suis pas sur que « tables des matières » soit en cause (car j’ai pu avoir touché à d’autres choses aussi), mais disons que de manière concomitante avec sa mise en service il est apparu sur SPIP-Contrib :

    -  un doublement des notes de bas de page

    -  un comportement curieux du flux rss du site, à savoir que le texte du dernier article publié, ou plus précisément tout ce qui est après des ancres de table des matières, se substitue aux textes de tous les articles précédents dans le flux rss (après les ancres des TdM) ... du moins tel que je le lis chez moi. Ce qui est avant ces ancres n’est pas touché.

    @+ NicolasR

    • Gloups :/

      Pour les notes, je ne pense pas que ce soit lié à ce plugin, mais sait-on jamais, je ferai une passe de vérification.

      Par contre, pour le second soucis, c’est bien possible que la table soit en cause. J’essaie d’économiser les ressources du serveur, et il se peut que parfois, ce soit trop.

      Comme toi, je n’ai pas des masses de temps pour les jours à venir, mais je vais tenter de regarder ça ce Week-End

    • Bon, a priori, je ne reproduis pas le bug des notes de bas de page. Et ni sur mes sites de tests ni sur spip-contrib, je ne constate d’erreur d’affichage dans les flux rss.

      Tiens moi au courant en cas de besoin pour trouver l’orgine de ces bugs-là :)

    • Salut James
      il est possible (mais pas certain) que le problème soit lié à la configuration particulière de SPIP-Contrib. Pour ce qui est de l’erreur de flux rss moi je le vois bien ... peut-il y avoir aussi une influence du lecteur RSS utilisé ?

      Quoiqu’il en soit, pour test, j’ai désactivé tdm, vidé le cache, et les problêmes que je cite disparaissent vus depuis chez moi .... il y a donc bien un lien avec la présence de tdm, mais sans qu’il soit sur qu’il soit seul en cause : des interactions avec autre chose ? mystère

      @+ NicolasR

    • bon :/

      Je vais reprendre ça, j’ai du raté quelquechose.
      Je te tiens au courant

    • Bien j’ai mis en service la 14611 du 15 août, vidé le cache de site au cas ou, compte-rendu de ce que je vois chez moi

      Les mieux :
      -  plus de doublon des notes de bas de page
      -  le backend de chaque article semble respecté

      Les moins :
      -  une table des matières apparait en force « dans » le texte, en plus de celle que l’on à défini avec la balise (et de manière étonnante en reprenant des éléments de styles mais en plus petit)
      -  cette tdm parasite apparait aussi dans le flux rss, avec un détail très raffiné, à savoir qu’elle copile la tdm de plusieusr articles .. la classe quoi ;-)

      @+ NicolasR

    • heu !! ... j’ai l’impression qu’en plus dorénavant le portfolio des documents présents dans le corps de l’article apparait, alors que normalement il ne devrait pas (du moins je n’ai pas souvenir qu’il apparaissait avant sur SPIP-Contrib)

      @+ NicolasR

    • rhaaaaaaaaaa

    Répondre à ce message

Ajouter un commentaire

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom