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
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)
Discussions par date d’activité
24 discussions
Il est possible d’utiliser ce plugin en combinaison avec le plugin ancresdouces et bootstrap pour réaliser un menu basé sur les composant affix / scrollspy.
Pour cela, il faut juste ajouter le modèle suivant dans votre squelette /modeles/table_matieres.html pour l’adapter au marquage HTML/CSS attendu par bootstrap :
Répondre à ce message
Bonjour,
avec TDM 2.2.4 comment surcharger l’image tdm.png pour respecter une charte graphique ?
j’ai essayé de redéfinir dans mes_fonctions.php le find_in_path() dans le define
défine('_RETOUR_TDM, ...)
mais rien y fait, c’est toujours l’image du plugin qui semble prioritaire.Merci d’avance si vous avez une solution.
cordialement
Bonjour,
Arf ! il faut simplement placer son image tdm.png dans un répertoire
/images/
soit dans/squelettes/images/
, soit dans/plugins/mon_plugin/images/
ou aussi dans/themes/mon_theme/images/
.Répondre à ce message
Bonjour,
est-ce que quelqu’un saurait comment faire en sorte que la TDM ne s’affiche pas dans les flux RSS des articles ?
NB pour ceux que ça intéresserai : le fichier de CSS que j’ai placé dans /squelettes/css/style.css
Répondre à ce message
Hello
Suite à ce post sur seenthis http://www.seenthis.net/messages/135053 faisant référence à la table des matières flottante de engadget, j’ai codé un petit js pour voir si c’était faisable simplement avec SPIP/jQuery/Plugin Table des matières.
Le résultat est visible là par exemple : https://technique.arscenic.org/commandes-linux-de-base/article/cron-gestion-des-taches-planifiees
C’est peut être encore un peu buggué car fait en 2 heures mais si vous trouvez que ça a sa place dans le plugin avec une petite option de conf pour l’activer je peux essayer de rendre un chouilla plus générique ?
Dites moi
t’es sûr que ça marche, je ne vois rien sur ton site ?
Oups... le plugin avait été désactivé par mégarde...
Là c’est mieux ?
Sur Firefox oui, ailleurs (Chrome et Safari), apparemment pas
Salut,
j’utilise ce plugin avec Ancres douces et j’ai des comportements bizarres :
le défilement doux se fait bien lors du premier parcours de mes intertitres (3 en tout) mais, lorsque arrivé en bas, je veux remonter à l’intertitre précédent ou au 1er, je n’ai plus le défilement doux.
Arrivé là, le défilement doux ne fonctionne plus dans un sens ni dans l’autre pour mes 2 premiers intertitres mais continue à fonctionner le troisième.
Voir l’exemple par là : http://dev.cousumain.info/spip.php?article1
En tout cas, merci pour ce plugin.
jean marie
Bon je viens de refaire une grosse partie du js cf : http://zone.spip.org/trac/spip-zone/changeset/73533
Dis moi si ça marche mieux.
Chez moi ça semble fonctionner correctement là : https://technique.arscenic.org/monitoring/awstats/article/installation-et-configuration-de
Salut Kent1,
merci pour ta réponse...
Malheureusement, ça ne marche toujours pas.
J’ai le même comportement sur ton site :
En haut de page (Table des matières non flottante), quand je clique sur Configuration de Awstats lui-même ça défile bien (doux) jusqu’en bas.
Une fois en bas (Table des matières flottante), si je clique sur Installation, je n’ai plus défilement doux et ça remonte d’un coup. A partir de là, ça ne défile plus du tout.
Par contre, si je recharge la page (F5) avant de cliquer sur Installation, ça défile bien (doux).
Pour info, je suis sous Win7 et j’ai testé sous Firefox 21, IE9, Chrome 27 et Safari 5.1 et c’est pareil :/
Avec http://zone.spip.org/trac/spip-zone/changeset/73537 ça devrait être un peu mieux (même page pour le test)
Effectivement, ça marche nickel... merci pour la rapidité !
Par contre, il y a l’air d’avoir un souci sur le positionnement du contenu au scroll : l’intertitre ciblé se retrouve sous la table flottante...
Et penses-tu que ce décalage puisse être configuré ?
Je m’explique : j’aimerais que les entrées de la table soient toutes visible en permanence et présentées horizontalement lorsque la table est flottante (display:inline). Je trouve que c’est plus intuitif que de devoir cliquer sur l’intertitre de ce qu’on est en train de lire pour la déplier.
J’ai un peu bidouillé dans le scripts... mais c’est pas terrible de bidouiller dans les scripts.
Oui, je sais, on s’éloigne du fonctionnement original, tu as le droit de dire m..... enfin, non :)
Un truc qui serait bien aussi, c’est que dans la Table flottante, il y ait un lien Haut de page qui pointe sur #contenu pour remonter au niveau du titre.
Sinon, il faut obligatoirement que le contenu commence par un intertitre et ça pose des problèmes si il y a un chapeau par exemple.
Répondre à ce message
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 ;-)
à tester ...
Je viens de commiter un patch sur la version trunk actuelle
cf : http://zone.spip.org/trac/spip-zone/changeset/54326
et cela semble fonctionner correctement :
http://technique.arscenic.org/services-web/streaming-audio-et-video/article/icecast-2-installation-et?var_mode=recalcul#tdm
++
en version 2.0.1 [54326] tout semble OK, kent1 ; merci !
Hello, je pense que ce correctif pose potentiellement un problème de cache : la table des matières stocke l’URL de la page sur laquelle elle a été calculée. Il est donc obligatoire que l’article soit affiché par un squelette inclus avec
{env}
, car sinon on peut retrouver une URL d’une mauvaise page.Effectivement cela posait problème j’ai donc opté pour une solution en js ici :
http://zone.spip.org/trac/spip-zone/changeset/72623
Répondre à ce message
Bonjour,
Est-il possible de désactiver la table des matières au cas par cas par exemple avec une balise genre
{table_matieres=non}
dans le texte d’un article ?merci
dd
Répondre à ce message
Un grand merci pour ce plugin.
J’ai un peu modifié son contenu car j’avais besoin d’une table des matières pour le #CHAPO.
J’ai donc créé une balise #TABLE_MATIERES_CHAPO
Pour cela j’ai ajouté les lignes suivants :
1- Dans le fichier tdm_pipelines.php
2- dans le fichier table_matieres.php (à la racine du plugin)
Du coup, j’ai trouvé une erreur dans le code de la fonction « tdm_vider_intertitres » qui permet de vider le cache des intertitres trouvés.
Toujours dans le fichier table_matieres.php ligne 227 il faut modifier...
...par
Peux-tu faire les corrections directement sur la zone ? merci
Ok. Je m’en occupe.
Tant qu’a faire, j’ai une proposition. J’ai également sur ce site le plugin « Enluminures typographiques ». Les sous-interttires genre...
...ne sont que partiellement pris en compte ce qui provoque un effet de bord indésirable.
J’ai rajouté dans le fichier table_matieres.php (ligne 143) le code ci-dessous qui permet de shunter ces sous-intertitres et donc de rendre la coexistence de ces deux plugins compatibles.
Avant...
....après
...et ça marche bien.
Je commit le bug et cet ajout, où juste le bug ?
Il n’est pas nécessaire de demander la permission :)
Surtout si ça marche mieux
D’abord, merci pour ce plugin qui permet de structurer proprement des documents longs simplement et efficacement.
@peetdu
merci pour le tips, curieusement chez moi en spip 3.0.1, avec Enluminures c’est plus sans
(.*)
:ce qui donne
"/{{{[^*]}}}/UmsS" => 'tdm_remplacement_raccourcis_standard_callback'
Non rectification, ça me bouffe le premier caractère de tous les titres de la table si il n’y a pas d’espace après la dernière astérixsme *
{{{** Titre }}}
qui est bizarre car les boutons ne crée pas les raccourcis ainsi dans le porte plume :/Répondre à ce message
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
Pour plus de précision, j’ajoute que j’utilise le squelette AHUNTSIC.
J’ai trouvé d’où venait le problème et une solution qui marche (sans malheureusement totalement corriger le plugin lui même)
Il faut éditer le fichier « table_matieres.php » (celui qui se trouve à la racine du plugin) et ligne 289 à 290 il faut remplacer ...
..par
Ce code sert à insérer la TDM en javascript ; si tu le neutralises (tu peux mettre un
#
pour passer la ligne en question en commentaire), ta TDM est insérée en HTML. Il faudrait donc comprendre pourquoi l’insertion en javascript ne se fait pas dans ton cas.Répondre à ce message
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 :
par :
Répondre à ce message
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 :
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
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
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 :
Des :
Ça semble correct (avec Zpip)
Répondre à ce message
Je viens d’effectuer quelques modifications du plugin (version 1.1)
Répondre à ce message
Bonjour,
Cette magnifique contrib comporte 2 bugs (SPIP 2.1.1) :
C’est vraiment dommage car cette contrib est la plus aboutie dans sa catégorie !
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
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.
même problème
idem chez moi en spip 2.1 !
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
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
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’articleJ’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
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 :
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
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
Ok avec la 1.9.3 ca fonctionne, mais dès qu’on met du Latex, ca plante ....
La table des matières est opérationnelle mais le tex est déterioré ....
En voici le Code
Sans le plugin activé le tex est nickel, avec le tex est détérioré ...
Cordialement
J’ai une parade, mais...
dans le fichier
table_matieres.php
, ligne 45, si je mets'(code|cadre|math'
, ça retabli effectivement le tex... mais si on met du texte avec des accolades dans la balise<math>
, ça ne comptera pas dans la table des matières.Je met ça pour le moment, en attendant de trouver, si c’est utile, un truc meilleur.
C’est corrigé avec la révision 14401 du plugin. Merci de me confirmer le fonctionnement attendu.
Répondre à ce message
Cette contrib’ me rappelle beaucoup « Génération automatique de numérotation, table des matières et références » de Mortimer et Chtitux...
Serait-il possible d’améliorer cette nouvelle « table des matières » en lui faisant gérer, comme l’ancienne, des niveaux de titres (et donc introduire des raccourcis typo, à cette occasion...) ?
Bien sur qu’elle rappelle, celle que tu cites et bien d’autres.
Pour les améliorations que tu souhaites, proposes un patch, sur la zone.
Oui, celle du Couteau Suisse aussi ;-)
Répondre à ce message
j’ai installé le plugin et j’ai mis la balise
#TABLE_MATIERES
dans une boucle
ARTICLE
Les ancres sont opérationnelles mais la table des matières n’est pas produite
j’obtient en lieu et place de la table ce qui suit :
La version utilisée : SPIP 1.9.2a [8878]
Le plugin : le dernier ... télécharger aujourdhui
idem
je ne vois qur #tdm au lieu et palce de la table des matières
1.9.2 b
alors que les intertitres fonctionnent bien !
.????????????????
c’est la version 1.9.3 (9738) qu’il faut avoir...pas la 1.9.2
Répondre à ce message
Juste pour dire que la table des matieres vient d’être très facilement installée sur SPIP-Contrib (1.9.3 SVN 9813). Apparemment ça marche ;-)
Peut-être faudrait-il mieux expliquer dans l’article quel est le style employé, et comment le modifier s’il y a lieu.
@+ NicolasR
Répondre à ce message
Ajouter un commentaire
Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :
Merci d’avance pour les personnes qui vous aideront !
Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.
Suivre les commentaires : |