Skip to main content Help Control Panel

Login   A+   A-

Community «   Le forum «   Besoin d'aide «  

Création Table des matières

Problem has been recorded

Issue description

Bonjour ;

Ma question va peut être paraître idiote mais quelqu'un serait-il m'indiquer comment on créer une table de matières avec yacs.

Je voudrais créer une table des matières pour un article découpé en plus de 20 pages. Cette table des matières doit apparaitre sur toutes les pages.

Un bonne exemple de ce que je cherche à faire : http://doc.ubuntu-fr.org:81/lamp_plus

J'ai aussi pensé à faire une bôite extra spécifique pour la table des matières. Celle-ci s'afficherais en association avec l'article.

Merci pour vos éclaircissement sur le sujet

Comments

ThierryP
avatar
from Nice, Drap
Associate, 1208 posts

on Apr. 6


Utilisation du code Yacs (toc)

Utilisation des balises h2 et h3 (title et subtitle)

Chaque nouvelle page doit obligatoirement commencer par un titre. (Pour le menu dans chaque page, a essayer le code (toc) à chaque début de page, ensuite titre du niveau souhaité...)

(Pouvais pas répondre plus vite )


Un annuaire propulsé par YACS - Skins pour Yacs : YordPress 5.3 - Bonbon Skin 1.2 - Totem 930
Nuxwin
avatar
from Caen, devant mon bureau
190 posts

on Apr. 6


ThierryP :

Ok, merci pour cette réponse donc si j'ai bien compris :

Mes titres et ancres dans mes pages :

ma première page

ancre1

ancre2

ancre3

ma deuxième page

ancre1

ancre2

ancre3

Appel de la balise [ toc ] encapsulée dans une balise [ folder ] pour la rendre dépliable :
ThierryP
avatar
from Nice, Drap
Associate, 1208 posts

on Apr. 6


A essayer en situation, mais ça devrait marcher, à peu de choses près


Un annuaire propulsé par YACS - Skins pour Yacs : YordPress 5.3 - Bonbon Skin 1.2 - Totem 930
Nuxwin
avatar
from Caen, devant mon bureau
190 posts

inspired from ThierryP on Apr. 6


ThierryP :

Ok alors y a comme un problème quand même.

Si je fais :

Représentation du corps du document dans sa totalité :
[ folder=table des matières ]
[ toc ]
[ /folder ]

[ title ]premier titre[/ title]

Cet article traite de...

[subtile ]Application de ..[ /subtitle]

Ici on applique...

[subtile ]Suppression de ..[ /subtitle]

Ici on supprime...
-
[ page ]

[ folder=table des matières ]
[ toc ]
[ /folder ]

[ title ]deuxième titre[/ title]

Ici nous installons tous les ...

[subtile ]Modification de ..[ /subtitle]

Ici on Modifie...

[subtile ]Configuration de ..[ /subtitle]

Ici on configure...
Et bien, cela ne fonctionne pas. En fait, dès qu'on se sert de la balise [ page ], cela ne fonctionne plus :

1. La boîte ne se dépplie pas ;

2. En visionnant le code source, on s'aperçois quelle ne contient pas la structure hiérarchisée.

Je vais aller à la pêche dans le code de yacs et travailler là-dessus pour proposer une amélioration, notamment faire en sorte que :
  • Cela fonctionne lorsqu'on utilise la balise [ page ] ;
  • Que la table des matière appelée sur chaque page soit construite à partir de la totalité du corps du document.


Note : Si Bernard ou tof ou autre pesonne compétente peut m'indiquer le script qui s'occupe du parsing, cela me permettra d'aller plus vite. Merci
Nuxwin
avatar
from Caen, devant mon bureau
190 posts

inspired from nuxwin on Apr. 6


Je fais suite à mon précédent message.

Comme indiqué en liminaire de ce post, dans le cadre de la publication d'un article éclaté sur plusieurs page grâce au code [ page ] proposé par le moteur Yacs, j'ai voulu créer ( sur chacune des pages ) une table des matières permettant aux utilisateurs d'accéder facilement au différents paragraphes constituants l'article publié.

La création d'une table des matière avec Yacs s'effectue grâce à l'insertion d'une balise de code nommée [ toc ]. Le problème ici, c'est que la team de développement ( pour des raisons que je ne connais pas ) a choisie de ne pas prendre en compte les balises [ toc ] insérées dans les articles publiés lorque ceci sont éclatés en plusieurs pages grâce au code [ page ].

Ceci est clairement mis en évidence dans le script ./articles/view.php :

// if there are several pages, remove toc and toq codes
if(count($pages) > 1)
$description preg_replace('/s*[(toc|toq)]s*/is'''$description);

Comme nous pouvons aisément le constater, si le document est constitué de plusieurs pages, les balises [ toc ] insérées dans le corps du document sont automatiquement supprimées.

Dans un premier temps, j'ai pensé tout bêtement désactiver ce comportement en commentant la partie du code mentionné ci-dessus. Ce faisant, afin de conserver ce comportement, j'ai préférer étendre la balise [ toc ] en rajoutant le code suivant juste en dessous de celui présenté ci-avant :

// Add by nuxwin team to extends [toc] code
if(count($pages) > 1)
$description str_replace('[toc=by_page]''[toc]'$description);

Le code rajouté ici permet aux utilisateurs qui le souhaitent de pouvoir insérer des balises [toc=by_page] dans le corps des documents employant la balise [ page ].

Ainsi, lorsque le document est parsé, toutes les balises [toc=by_page] sont automatiquement remplaçées par de véritable balises [ toc ] sans extension ce qui a pour effet de créer une table des matières pour la page du document dans laquelle la balise est insérée..

La prochaine étape consiste à faire en sorte que la construction de la table des matière porte sur la totalité du corps du document. Là encore, je pense ajouter une seconde extension à la balise [ toc ] soit [toc=all_pages] pour indiquer que la construction doit portée sur l'ensemble des titre, subtitle.. du document et non pas seulement sur ceux de la page en cours d'affichage.

A Bernard :

Au niveau de l'extension, je suppute que par respect des conventions, je ne devrais pas faire ceci directement dans view.php mais dans le module code de yacs.

Merci de me dire si c'est une bonne idée d'étendre cette balise afin de permettre le comportement évoqué ci-avant et si oui, de me dire si la modification convient en l'état ou si je dois plutôt apporter les modifications nécéssaires directement dans le module code de yacs.
Bernard
avatar
from nearby-an-airport
Associate, 6696 posts

on Apr. 10


Le problème essentiel de la table des matières, c'est de bien gérer les liens qu'elle contient. En absence de balise [ page ], c'est facile, tous les titres sont dans la page courante, et un ancrage simple suffit à retrouve ses petits. En revanche, lorsqu'une ou plusieurs balises [ page ] sont présentes, c'est une autre paire de manche. Plutôt que de produire des idées fausses, la table des matières a été purement et simplement déclarée incompatible avec les balises [ page ].

Bon, on pourrait faire quelque chose de plus intelligent, c'est sûr, mais l'effort est assez important, et donc les suggestions de code ad hoc sont les bienvenues.
LeToto
196 posts

on June 20


    Bonjour.

    L'amélioration de cette fonction de table de matières m'intéresse, car j'aimerais aussi l'appliquer sur un article volumineux, devant contenir plusieurs pages.

    En fait, l'article en question est assez long, et comporte plusieurs chapitres. J'aimerais pouvoir générer une page par chapitre (cliquer pour un apperçu de l'article).

    Où en est donc l'évolution des améliorations?

    Merci.

    @+

Tags: table des matières

Rate this page
Posted by Nuxwin on Apr. 6, edited by LeToto on June 20, (popular)