SPIP-Contrib

SPIP-Contrib

عربي | Deutsch | English | Español | français | italiano

273 Plugins, 191 contribs sur SPIP-Zone, 97 visiteurs en ce moment

Accueil du site > Rédaction > Sommaires > Table des Matières > Table des Matières

Table des Matières

29 juillet 2007 – par Fil, James, Matthieu Marcillaud – 48 <blink style='color:red;'>public|spip|ecrire:commentaires</blink>

11 votes

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, vous n’avez plus qu’à l’activer. Ensuite activez le plugin via l’interface d’administration de votre site (Configuration/Gestion des plugins : la petite prise électrique rouge...)

Utilisation

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

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

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.

Prérequis

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

Retour en haut de la page

Vos commentaires

  • Le 1er février à 10:21, par PhDG En réponse à : Table des Matières

    J’ai SPIP 2.1.12 avec la dernière version de ce plugin. Il y a un article sur lequel je ne parviens pas à faire apparaître la table des matières dans la partie publique. Elle se crée pourtant bien dans la partie privée. Je ne comprends pas ! Je ne vois aucune différence entre les deux articles qui pourrait causer cette bizarrerie.
    Une idée ???
    Merci

    • Le 2 février à 12:31, par PhDG En réponse à : Table des Matières

      Pour plus de précision, j’ajoute que j’utilise le squelette AHUNTSIC.

    Répondre à ce message

  • Le 14 décembre 2011 à 10:31, par Aurélie En réponse à : Table des Matières

    En Spip 2.1.12, table des matières 2.0.2 [54334], la table des matières générée automatiquement fonctionne bien mais le texte de l’article n’est pas traité si on place soi-même la balise #TABLE_MATIERES dans le squelette (cfg : « La table des matières est-elle générée automatiquement ? » : non).

    Pour y remédier rapidement, j’ai passé les filtres |table_matiere{texte}|propre à la balise #TEXTE* :

    Mais j’imagine que le plugin devrait tester la variable de configuration : si _AUTO_ANCRE est oui, on applique le filtre table_matieres au texte ; sinon on l’applique tout de même, avec le paramètre ’texte’ (le filtre ne retourne alors que le texte traité, donc, avec les ancres).

    Dans tdm_pipelines.php, remplacer :

    1.         if (_AUTO_ANCRE == 'oui') {
    2.                 $traitements_actuels =
    3.                         isset($interface['table_des_traitements']['TEXTE']['articles'])
    4.                                 ? $interface['table_des_traitements']['TEXTE']['articles']
    5.                                 : $interface['table_des_traitements']['TEXTE'][0];
    6.                                
    7.                 // completer les traitements actuels, mais le sommaire automatique passe en preum's
    8.                 $interface['table_des_traitements']['TEXTE']['articles'] =
    9.                         str_replace('%s', 'table_matieres(%s)', $traitements_actuels);
    10.         }

    par :

    1.         // traiter les articles
    2.         $traitements_actuels =
    3.                 isset($interface['table_des_traitements']['TEXTE']['articles'])
    4.                         ? $interface['table_des_traitements']['TEXTE']['articles']
    5.                         : $interface['table_des_traitements']['TEXTE'][0];
    6.         //si le sommaire automatique est actif, on ajoute la table des matières et les ancres
    7.         if (_AUTO_ANCRE == 'oui') $filtre_tdm = 'table_matieres(%s)';
    8.         // sinon, que les ancres
    9.         else $filtre_tdm = 'table_matieres(%s,\'texte\')';
    10.         // completer les traitements actuels, mais le sommaire automatique passe en preum's
    11.         $interface['table_des_traitements']['TEXTE']['articles'] =
    12.                 str_replace('%s', $filtre_tdm, $traitements_actuels);

    Répondre à ce message

  • Le 23 novembre 2011 à 17:45, par csauvage En réponse à : Table des Matières

    Pour ma part, j’ai un comportement bizarre sous SPIP 2.1.8 :
    La balise #TABLE_MATIERE me renvoit un code qui est échappé, genre :

    1. <div class="encart" rel='&lt;div id=&quot;tdm&quot; class=&quot;divers&quot;&gt; &lt;h2 class=&quot;menu-titre&quot;&gt;Table des matières&lt;/h2&gt; &lt;ul&gt; &lt;li &gt;&lt;a href=&#39;

    Je suis obligé de passer par un filtre maison en PHP qui me fait :
    $tdm = htmlspecialchars_decode($tdm, ENT_QUOTES) ;
    $tdm = str_replace(" rel=’", ’>’, $tdm) ;
    $tdm = str_replace("

    ’>

    ", ’

    ’, $tdm) ;
    return $tdm ;

    Et là ça marche...

    Je ne pense pas que ce soit normal. Quelqu’un s’est-il déjà frotté à ce problème ?

    Autre problème, si je ne spécifie pas l’option « La table des matières est-elle générée automatiquement ? » à Oui, le plugin ne met pas les ancres dans le #TEXTE.
    J’ai dû aller retoucher le code du plugin pour ne pas afficher 2 fois la TDM.
    Ca pourrait être une histoire de version de SPIP ??
    Camille

    Répondre à ce message

  • Le 29 juillet 2011 à 11:02, par Cyril Marion En réponse à : Table des Matières

    Bonjour,

    Il semblerait que les liens générés dans la table des matières ait un peu mal avec les urls arborescentes. Avec les urls standard tout fonctionne correctement :

    Exemple :

    Url correcte vers un paragraphe de l’article, générée par TDM, avec les urls standard :

    Lien vers le même paragraphe, généré automatiquement par le plugin TDM, mais avec les urls arbo activées :

    Alors que la bonne url vers ce paragraphe devrait être :

    Du coup, les liens amènent vers une page 404.

    Pour info, ma config d’urls arborescentes :

    Avez-vous une idée pour résoudre ce problème de liens ?

    Merci par avance ;-)

    Répondre à ce message

  • Le 1er février 2011 à 17:51, par JLuc En réponse à : Table des Matières

    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

    • Le 2 février 2011 à 16:05, par JLuc En réponse à : Table des Matières

      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

  • Le 14 septembre 2010 à 03:33, par Loiseau2nuit En réponse à : Table des Matières

    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 ;)

    • Le 4 janvier 2011 à 18:34, par Matthieu Marcillaud En réponse à : Table des Matières

      Ça me génère avec :

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

      Des :

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

      Ça semble correct (avec Zpip)

    Répondre à ce message

  • Le 4 janvier 2011 à 18:32, par Matthieu Marcillaud En réponse à : Table des Matières

    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

  • Le 10 août 2010 à 14:28, par Yann974 En réponse à : Table des Matières

    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 !

    • Le 18 août 2010 à 09:00, par Matthieu Moy En réponse à : Table des Matières

      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

  • Le 27 novembre 2008 à 13:39, par cam.lafit En réponse à : Inhiber table des matieres au cas par cas

    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

  • Le 2 mars 2009 à 20:21, par ? En réponse à : désactivation Table des Matières

    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

Répondre à cet article

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 Les choses à faire avant de poser une question (Prolégomènes aux rapports de bugs. )
Ajouter un document

Retour en haut de la page

Ça discute par ici

  • Thélia

    26 juin 2007 – 838 <blink style='color:red;'>public|spip|ecrire:commentaires</blink>

    Une approche basée sur l’utilisation conjointe des deux logiciels SPIP et Thélia pour la réalisation de sites de publication et de vente en ligne

  • MediaBox

    10 mai 2010 – 178 <blink style='color:red;'>public|spip|ecrire:commentaires</blink>

    Aperçu La MediaBox est une Boîte multimédia polyvalente et personnalisable. Le plugin est basé sur la librairie moderne ColorBox, qui a été enrichie et adaptée pour SPIP. Par défaut, mediabox propose 5 habillages. Il est assez facile d’en créer de (...)

  • Navigation AJAX

    31 janvier – 10 <blink style='color:red;'>public|spip|ecrire:commentaires</blink>

    Ce plugin permet de modifier automatiquement une parties des liens internes de manière à ce qu’ils ne déclenchent pas un chargement complet de la page cible, mais un chargement en AJAX de certains éléments spécifiés à l’avance. Il permet aussi de (...)

  • Squelettes IENSP-X version Pleine Page pour SPIP 2.1

    8 décembre 2008 – 11 <blink style='color:red;'>public|spip|ecrire:commentaires</blink>

    Version 3.2 pour SPIP 2.1

  • Balise #CAPTCHA

    12 juillet 2007 – 24 <blink style='color:red;'>public|spip|ecrire:commentaires</blink>

    Cette nouvelle balise oblige à rentrer un code avant d’avoir accès aux forums publics des articles.