Un sommaire pour vos articles

Une fonctionnalité du Couteau Suisse qui repère les intertitres des textes de vos articles ou de vos rubriques, et permet même plusieurs niveaux, puis en fabrique automatiquement un sommaire.

Introduction

Les articles de votre site sont parfois un peu longs et vous vous êtes probablement déjà posé la question de savoir comment insérer un sommaire au début d’un texte — à l’instar de cette page — histoire d’en faciliter la lecture et la navigation...

Voici notre solution : utilisez simplement dans vos articles le raccourci SPIP des intertitres ({{{Mon intertitre}}}). Le plugin va ensuite ajouter automatiquement un cadre de navigation en tête d’article en réunissant les différents intertitres affublés d’un lien cliquable vers le paragraphe concerné. Ce cadre peut ressembler à ceci :

En ce qui concerne les intertitres, une petite icône permet de revenir au sommaire. Cette ancre peut ressemble à ceci :

Pour obtenir ce résultat, il suffit simplement de taper ce qui suit dans votre article :

               {{{Conclusion}}}
 
               Quelques mots, pas plus !

Ce système vous offre donc un facile va-et-vient entre les paragraphes du texte et le sommaire.

Installation

Cet outil est une fonctionnalité du plugin « Le Couteau Suisse » que vous pouvez trouver ici : Le Couteau Suisse.

Pour avoir accès au sommaire automatique, il vous faut donc avoir installé ce plugin en suivant la procédure normale d’installation des plugins SPIP.

Ensuite, veuillez activer l’outil « Sommaire en début d’article » en vous rendant sur la page d’administration du plugin en espace privé (Bouton Configuration, et onglet "Le Couteau Suisse").

Dépendances

Les styles CSS du sommaire et des différents liens sont insérés grâce à la balise #INSERT_HEAD qui doit absolumet être présente (en un seul exemplaire) dans le header de vos squelettes (entre les balises <head> et </head> des fichiers HTML). Si vous ne trouvez pas cette balise dans vos codes et que le sommaire n’apparait pas avec l’apparence voulue, alors l’outil « Balise #INSERT_HEAD » du Couteau Suisse permet d’insérer automatiquement cette balise sans manipulation de votre part.

Configuration

Par défaut, le sommaire ne retient que les intertitres de premier niveau [1] : balises HTML <h3> ou raccourcis SPIP {{{...}}}. Or, il est possible de prendre en compte des niveaux supplémentaires en renseignant le paramètre « Profondeur retenue ». Les balises <h4> ou <h5> pourront alors être insérées dans le sommaire. Si vous avez installé un plugin typographique afin d’éviter d’utiliser les balises HTML <hN> en dur, les intertitres de niveaux supérieurs peuvent se noter de différentes façons. Exemples : {2{...}2}, {{{**...}}}, {{{**...}}},etc.

Le Couteau Suisse a choisi de retenir nativement la syntaxe {{{**...}}} de mortimer. Ces nouveaux raccourcis (intertitres hiérarchisés, ou sous-titres) seront donc automatiquement traités, même en l’absence de plugin tiers :
-  Intertitre de niveau 1 : {{{Intertitre}}} ou {{{*Intertitre}}}
-  Intertitre de niveau 2 : {{{**Intertitre}}}
-  Intertitre de niveau 3 : {{{***Intertitre}}}
-  etc.

Exemple de sommaire ayant deux niveaux d’intertitres :

Par défaut, le sommaire est constitué des 30 premiers caractères de vos intertitres afin d’éviter tout débordement inesthétique de texte. Sur la page de configuration du plugin (Bouton Configuration, et onglet « Le Couteau Suisse »), vous pouvez modifier ce paramètre à votre guise. La fonction utilisée est simplement la fonction couper() de SPIP, qui ajoute des points de suite à la place du texte supprimé. Voici l’aperçu d’un sommaire où deux intertitres sont tronqués :

Vous pouvez également fixer le comportement du plugin concernant la création du sommaire :
-  Systématique pour chaque article. Cependant, une balise « [!sommaire] » placée n’importe où à l’intérieur du texte de l’article créera une exception afin de pouvoir bénéficier des intertitres sans qu’un sommaire ne soit créé dans un article en particulier. .
-  A l’inverse : uniquement pour les articles contenant la balise « 

 ».
Ces raccourcis, bien sûr, ne seront pas affichés à l’écran.

Changements d’aspect et surcharges

Pas de fond

Par défaut, le sommaire utilise une image de fond que vous pouvez voir ci-dessus. Un second aspect du sommaire est possible si vous insérez le raccourci « [!fond] » n’importe où dans le texte. Le sommaire aura donc un aspect similaire à cet exemple :

Les surcharges de fichiers

Techniquement, le plugin utilise :
-  un modèle SPIP : plugins/couteau_suisse/fonds/sommaire.html
-  une feuille de styles : plugins/couteau_suisse/outils/sommaire.css.html

Ces deux fichiers peuvent facilement être surchargés dans votre squelette en les recopiant dans :
-  mon_squelette/fonds/sommaire.html
-  mon_squelette/outils/sommaire.css.html

En étudiant les deux fichiers surchargeables cités ci-dessus, vous pourrez remarquer les différentes classes CSS. Il vous sera alors facile de paramétrer ces classes dans vos fichiers de squelette si par exemple vous souhaitez changer de couleur de fond, de marge ou de style de bordure...

Voici le code de sommaire.html :

<div class="cs_sommaire cs_sommaire_[(#ENV*{fond_css})]_fond" id="outil_sommaire">
  <div class="cs_sommaire_inner">
    <div class="cs_sommaire_titre_[(#ENV*{fond_css})]_fond">&nbsp; <:couteau:sommaire_titre:> &nbsp;</div>
    <ul>
      [(#ENV*{sommaire})]
    </ul>
  </div>
</div>

Si l’aspect du sommaire qui vous est proposé ici ne vous plait vraiment pas, alors faites une surcharge directement dans votre squelette en créant votre propre fichier « mon_squelette/fonds/sommaire.html ». Le sommaire d’origine sera donc ignoré, au profit de votre propre sommaire. Cette façon de faire peut également s’appliquer au fichier des styles.

Si l’envie vous venait de changer simplement le titre du sommaire, alors changez simplement la chaîne de titre de votre fichier mon_squelette/fonds/sommaire.html. Un exemple qui bénéficie de toutes les traductions de SPIP :

[(#REM) "Navigation rapide" et toutes ses traductions ]
<div class="cs_sommaire_titre"><:icone_brouteur:></div>

Le sommaire est aujourd’hui dé/repliable et par défaut, le visiteur trouve un sommaire déplié (visible en totalité). Pour obtenir un sommaire replié lorsque le visiteur découvre la page pour la première fois (seul le titre apparaît), il suffit de surcharger le fichier fonds/sommaire.html en ajoutant les deux classes suivantes :
-  cs_sommaire_replie sur <div class="cs_sommaire_titre_[(#ENV*{fond_css})]_fond">
-  cs_sommaire_invisible sur <ul>

Ce qui donne :

<div class="cs_sommaire cs_sommaire_[(#ENV*{fond_css})]_fond" id="outil_sommaire">
  <div class="cs_sommaire_inner">
    <div class="cs_sommaire_titre_[(#ENV*{fond_css})]_fond cs_sommaire_replie">&nbsp; <:couteau:sommaire_titre:> &nbsp;</div>
    <ul class="cs_sommaire_invisible">
      [(#ENV*{sommaire})]
    </ul>
  </div>
</div>

Attention, le sommaire sera systématiquement replié lorsque le visiteur arrive sur la page pour la première fois. Mais s’il quitte la page le sommaire déplié, alors un cookie posé sur sa machine permettra de déplier le sommaire s’il revient sur la page... Euh, suis-je clair ?

Les liens de retour au sommaire

Lors de la construction du sommaire, le plugin ajoute par défaut à chaque intertitre de la page, un lien de retour au sommaire qui permet au lecteur de revenir facilement en haut de la page. Vous avez maintenant la possibilité (version récente du Couteau Suisse) de modifier ce comportement en surchargeant la fonction sommaire_lien_retour_dist($self, $titre) que vous pouvez trouver dans le fichier outils/sommaire_fonction.php.

Pour cela, il vous faut placer une nouvelle fonction sommaire_lien_retour($self, $titre) dans votre fichier config/mes_options.php que le compilateur utilisera à la place de la précédente. Par exemple, si vous ne voulez pas des liens de retour au sommaire dans les intertitres, utilisez le code suivant :

function sommaire_lien_retour($self, $titre) { 
  return $titre;
}

A titre d’info, voici le code actuel de la fonction utilisée par défaut :

function sommaire_lien_retour_dist($self, $titre) {
  static $haut = NULL;
  if(!isset($haut)) 
    $haut = '<a title="'._T('couteau:sommaire_titre')
        .'" href="'.$self.'#outil_sommaire" class="sommaire_ancre">&nbsp;</a>';
  return $haut . $titre;
}

Le calcul des ancres

Lors de la construction du sommaire, le plugin calcule automatiquement les ancres de chaque intertitre par incrémentation : outil_sommaire_XX. Vous avez maintenant la possibilité (version récente du Couteau Suisse) de modifier ce comportement en surchargeant la fonction sommaire_id_ancre_dist($index, &$titre, $hn) que vous pouvez trouver dans le fichier outils/sommaire_fonction.php.

A l’instar des liens au paragraphe précédent, il vous faut pour cela placer une nouvelle fonction sommaire_id_ancre($index, &$titre, $hn) dans votre fichier config/mes_options.php que le compilateur utilisera à la place de la précédente.

Si vous souhaitez de belles ancres en approfondissant la compatibilité avec le format proposé ici par mortimer, configurez votre outil pour utiliser de « jolies ancres » dans le sommaire. Le calcul des ancres n’est alors plus surchargeable et le plugin utilisera la fonction suivante (compatible avec les intertitres en image) :

function sommaire_id_ancre_ex($index, &$titre, $hn) {
  // traiter le format {{{Mon titre<mon_ancre>}}} (ou alt='Mon titre&lt;mon_ancre&gt;')
  if(preg_match(',<(\w+)>$,', $titre, $r)
      || preg_match(',&lt;(\w+)&gt;(?=\'),', $titre, $r)) {
    $titre = str_replace($r[0], '', $titre);
    return $r[1];
  }
  $a = strtolower(translitteration(sommaire_nettoyer_titre($titre)));
  $a = trim(preg_replace(',[^a-z0-9_]+,', '_', $a), '_');
  return strlen($a)>2?$a:"sommaire_$index";
}

A titre d’info, voici le code actuel de la fonction utilisée par défaut :

function sommaire_id_ancre_dist($index, &$titre, $hn) {
  return 'outil_sommaire_' . $index;
}

Notez que la variable $titre (intertitre en cours) est passée en référence, ce qui permet de la modifier le cas échéant. $index est incrémenté à chaque appel de la fonction. $hn est le rang (le « N » tiré de la balise HTML <hN>) de l’intertitre en cours. Si vous activez l’outil « Intertitres en images » il est fort probable que $titre soit une balise image (<img ... />) et non un texte...

Les éléments du sommaire

Lors de la construction du sommaire, le plugin cherche pour chaque élément, une fonction sommaire_id_page($element, $page) permettant certaines personnalisations, notamment en cas de découpe en pages. Le paramètre $element est le lien cliquable mis en forme pour accéder au paragraphe correspondant, et le paramètre $page est le numéro de l’extrait découpé. Par défaut, le plugin ajoute ce numéro dans le libellé de chaque lien, par exemple : « Introduction, p1 » , « Conclusion, p2 ».

Pour changer ce comportement d’origine, et à l’instar des ancres au paragraphe précédent, il vous faut pour cela placer la fonction sommaire_id_page($element, $page) dans votre fichier config/mes_options.php que le compilateur utilisera à la place de la fonction native sommaire_id_page_dist.

Voici un exemple de fonction qui supprime ici toute référence aux pages découpées :

function sommaire_id_page($element, $page) {
	return $element;
}

A titre d’info, voici le code actuel de la fonction utilisée par défaut :

function sommaire_id_page_dist($element, $page) {
	return $page ? $element 
		.  _T('couteau:sommaire_page', array('page'=>$page))
	 : $element;
}

Balise #CS_SOMMAIRE

Par défaut, le Couteau Suisse insère le sommaire en tête d’article automatiquement. Mais vous avez la possibilité de placer le sommaire ailleurs dans votre squelette qu’en tête de votre article grâce à une balise #CS_SOMMAIRE. Attention : l’utilisation de cette balise doit être activée dans la page de configuration de l’outil « Sommaire automatique » et annule ainsi l’insertion automatique du sommaire dans vos articles.

Cette balise renvoie le sommaire seul quand il existe, et se comporte un peu comme la balise #TEXTE : elle doit être placée à l’intérieur d’une boucle ARTICLES. Depuis la version 1.8.36.00 du Couteau Suisse, la balise #CS_SOMMAIRE accepte un paramètre numérique permettant d’accéder directement à un article par son id_article (grâce à un appel SQL), évitant ainsi une boucle dédiée.

Exemples : #CS_SOMMAIRE{2}, #CS_SOMMAIRE{#GET{toto}} ou #CS_SOMMAIRE{#ENV{id_article}}.

Attention, ce raccourci ne doit pas être utilisé à l’intérieur d’une boucle du même article, sous peine d’un appel SQL inutile. Exemple évident à éviter :
<BOUCLE01(ARTICLES)>#CS_SOMMAIRE{#ID_ARTICLE}</BOUCLE01>
Vous l’avez compris, la syntaxe correcte est bien sûr :
<BOUCLE01(ARTICLES)>#CS_SOMMAIRE</BOUCLE01>

Depuis la version 1.8.154 du Couteau Suisse, le filtre |sommaire_url{nouvelle_URL} vous permet de remplacer l’URL par défaut du sommaire (celle de la page courante en fait) par celle de votre choix. Ce filtre vous sera indispensable lorsque la balise #CS_SOMMAIRE n’est pas utilisée sur la page de l’article correspondant.

L’exemple suivant retourne une liste de sommaires d’articles pointant correctement vers les intertitres repérés dans chacun des articles :
<BOUCLE01(ARTICLES)>[(#CS_SOMMAIRE|sommaire_url{#URL_ARTICLE})]</BOUCLE01>

Voici deux exemples rendant le même résultat (le premier cependant fait un appel SQL supplémentaire) :
-  [(#CS_SOMMAIRE{2}|sommaire_url{#URL_ARTICLE{2}})]
-  <BOUCLE01(ARTICLES){id_article=2}>[(#CS_SOMMAIRE|sommaire_url{#URL_ARTICLE})]</BOUCLE01>

Notes techniques et astuces

-  Techniquement parlant, cet outil agit sur toutes les balises #TEXTE trouvées dans vos squelettes et insère un sommaire. Vous pouvez donc insérer des intertitres dans vos articles, vos textes de rubrique, etc.

-  Une condition est cependant nécessaire : l’insertion automatique du sommaire ne fonctionnera pas si votre squelette (en fait, l’ensemble de vos fichiers .html) utilise la balise #TEXTE étoilée (« #TEXTE* »). En effet, cette syntaxe permet de s’affranchir de tous les filtres automatiques et SPIP renvoie donc le texte brut sans aucune transformation. Si vous tenez absolument à l’étoile pour ajouter un de vos filtres par exemple, alors il faut écrire dans une boucle ARTICLES : [(#TEXTE*|mon_filtre|cs_traitements{TEXTE,articles})] à la place de [(#TEXTE)]. Explication : l’étoile de la balise empêche tout traitement SPIP et renvoie le texte brut stocké en base de données, le filtre |mon_filtre est votre fonction perso écrite dans le fichier mes_fonctions.php, puis le filtre |cs_traitement du Couteau Suisse rétablit les traitements originaux de SPIP correspondant à la balise #TEXTE et aux objets articles.

-  Si une balise n’est pas couverte par le traitement du sommaire automatique, alors utilisez le filtre |sommaire_d_article.
Exemple : [(#MA_BALISE|sommaire_d_article)].
Cette méthode est également applicable à une inclusion.
Exemple : [(#INCLURE{fond=mon-fond, id_article, env}|sommaire_d_article)]
Notez que si la balise #CS_SOMMAIRE est active, le sommaire n’est pas inséré automatiquement au texte examiné. Veuillez consulter le paragraphe suivant pour le paramétrage du filtre.

-  Paramétrage du filtre |sommaire_d_article (depuis la révision 61832 du Couteau Suisse) :
Un texte + son sommaire inséré si la balise #CS_SOMMAIRE est inactive :
   [(#UNTEXTE|sommaire_d_article)]
Un texte + son sommaire inséré quel que soit l’état de la balise #CS_SOMMAIRE :
   [(#UNTEXTE|sommaire_d_article{0})]
Le sommaire seul, calculé grâce au modèle fonds/sommaire.html :
   [(#UNTEXTE|sommaire_d_article{1})]
Le sommaire seul, sous forme de liste <li></li> :
   [(#UNTEXTE|sommaire_d_article{2})]

-  Comment faire pour éviter le sommaire automatique quelque part dans mon squelette ? Prenons par exemple la balise #TEXTE de la boucle (ARTICLES). Le code à utiliser est : [(#TEXTE*|concat{#EVAL{_CS_SANS_SOMMAIRE}}|cs_traitements{TEXTE,articles})]. Explication : l’étoile de la balise empêche tout traitement SPIP et renvoie le texte brut stocké en base de donnée, le filtre |concat ajoute au texte brut [!sommaire] pour empêcher la création future d’un sommaire, puis le filtre |cs_traitement du Couteau Suisse rétablit les traitements originaux de SPIP correspondant à la balise #TEXTE et aux objets articles. Si vous préférez restreindre le sommaire automatique à certaines rubriques, utilisez par exemple le test suivant : [(#ID_RUBRIQUE|match{'^(3|4|5)$'}|oui) placez votre balise #TEXTE étoilée et filtrée ici]

Correctif :  : Depuis la révision 43782 du Couteau Suisse, la notation précédente est caduque. Ceci :
[(#TEXTE*|concat{#EVAL{_CS_SANS_SOMMAIRE}}|cs_traitements{TEXTE,articles})]
doit être remplacé par cela :
[(#TEXTE*|cs_traitements{TEXTE,articles,sommaire_d_article})]

-  Afin d’éviter que les raccourcis « [!sommaire] » ou « [!fond] » se retrouvent automatiquement dans les résumés produits par la balise #INTRODUCTION, activez aussi l’outil « Balise #INTRODUCTION ».

-  En manipulant les styles css ou en utilisant jQuery, Il vous est possible de manipuler l’aspect du sommaire. Le cadre est en fait un <div id="outil_sommaire" class="cs_sommaire" >.

-  Le cadre du sommaire est livré par défaut avec une marge à gauche (1em) et une marge à droite (0.4em). Si la marge à droite ne vous est pas nécessaire, alors ajoutez le code suivant au fichier css de votre squelette : .cs_sommaire {margin-right:0pt !important;}. Si vous préférez mettre ce cadre en haut à gauche de votre article au lieu de l’avoir à droite, alors ajoutez ce code : .cs_sommaire {float:left !important;}.

-  Pour fixer la largeur et éviter les retours à la ligne : .cs_sommaire { width:10em; white-space:nowrap; }. Pour une hauteur fixe : div.cs_sommaire { height:16em; }. Etc, etc !

-  Cet outil « Sommaire en début d’article » se marie très bien avec l’utilisation d’un outil voisin : « Découpe un texte en pages et/ou onglets ». Si ce dernier est activé, le sommaire détecte en effet les découpages et ajoute le numéro de la page où les différents intertitres SPIP ont été trouvés. Voici l’exemple d’un article sur deux pages :

-  Si vous activez l’outil « Des blocs dépliables » et que vous définissez "h3" comme balise de titre, alors il est possible que le sommaire automatique prenne en compte les titres de vos blocs dépliables. Pour que ce ne soit pas le cas, configurez cet outil en spécifiant une valeur haute, exclue par le niveau de profondeur des intertitres. Exemple : h6.

Notes

[1Et s’il n’y a qu’un seul titre, pas besoin de sommaire, qui n’est donc pas affiché !

Discussion

55 discussions

  • 1

    Bonjour à tous,

    Le sommaire fonctionne bien c’est cool :).

    Je cherche a modifier le rendu HTML du sommaire.
    Dans la doc il est indiqué qu’il faut modifier les ficheirs :

    • mon_squelette/fonds/sommaire.html
    • mon_squelette/fonds/sommaire.css.html

    Malheureusement, quand je modifie le fichier :

    • squelettes/fonds/sommaire.html

    Rien ne se passe.
    Avez vous rencontré le cas ? Je précise bien évidemment que j’ai nettoyé le cache ...etc...

    • visiteur

      Et c’est bien là où se trouve le squelette actif du site ? Ce n’est pas un plugin par hasard ? Et la version de SPIP est récente ?

    Répondre à ce message

  • 2
    Thiébaut

    Bonjour et merci pour cette fonction indispensable du CS.

    Ma question concerne une adaptation du système d’ancres avec une barre fixe de navigation, afin que le titre visé par l’ancre s’affiche sous cette barre fixe et non tout en haut.

    En effet, actuellement, quand on clique sur le sommaire, le titre se retrouve au top, c’est à dire juste derrière cette barre de navigation fixe. En appliquant par exemple un

    padding-top: 100px;

    au titre, cela fonctionne... mais le padding est visible.

    Pour que le padding soit invisible, il suffirait que le « id » de l’ancre soit plutôt dans un <a id="mon ancre" class="ancre"></a> placé à l’intérieur du h3, juste avant le <a> de retour au sommaire. C’est du moins ce que j’ai fait avec les autres ancres du site, en créant une classe CSS dédiée.

    Il suffirait donc que j’ajoute une fonction pour créer cette ancre . Mais je n’y connais rien en php. Si c’est faisable, merci de me donner une piste !

    • Bonjour.
      Sans doute faut-il écrire une function sommaire_lien_retour($self, $titre) personnalisée alors ? La doc donne quelques explications...

    • Oui, j’ai tâtonné, mais le php... j’y connais rien. En fait j’avais presque réussi mais je n’arrivais pas à passer la variable $index, qui d’après ce que j’ai compris donne le numéro de l’ancre.

      Quand bien même j’aurai réussi, le sommaire ne détecte le titre qu’avec cet id. Or un id doit être unique... Donc coincé. Du moins il me semble non ?

      Heureusement, j’ai trouvé cette merveilleuse combine en css, qui résout le problème.

      [id^="outil_sommaire_"] {
          margin-bottom: -30px;
          padding-top: 50px;
          position: relative;
          top: -50px;
      }

      Le « ^ » sert en quelques sortes à transformer le id en sélecteur « class » : tous les id qui commencent par id=« outil_sommaire » seront concerné par le règle.

      Quant à cette règle, c’est « trois pas en avant en padding, trois pas en arrière avec un top, et en enfin une petite correction de margin-bottom »... mais ça fonctionne ! ;-)

    Répondre à ce message

  • 5

    Bonjour, je cite :

    - Cet outil « Sommaire en début d’article » se marie très bien avec l’utilisation d’un outil voisin : « Découpe un texte en pages et/ou onglets ». Si ce dernier est activé, le sommaire détecte en effet les découpages et ajoute le numéro de la page où les différents intertitres SPIP ont été trouvés. (...)

    Cela fonctionne merveilleusement bien, seul hic le sommaire affiche des « .p1 » , « .p2 » ...etc
    après chaque titre et j’aimerais les enlever , comment est-ce réalisable ?

    Cordialement.

    Répondre à ce message

  • Christophe Noisette

    Bonjour
    je ne comprends pas pourquoi le raccourcis typo {{{....}}} renvoie sur un style de type <H3>. Il serait plus logique et plus google comptabile d’avoir un <H2>pour le premier niveau des inter, étant donné que le <H1> est prévu pour le titre de l’article. J’ai essayé de modifier le fichier couteau_suisse/outils/sommaire.php de la sorte

    if(!isset($GLOBALS['debut_intertitre'])) $GLOBALS['debut_intertitre'] = '<h2 class="spip">';
    		if(!isset($GLOBALS['fin_intertitre'])) $GLOBALS['fin_intertitre'] = '</h2>';

    mais ça n’a rien changé.
    Merci de m’expliquer si possible la logique derrière ce H3... et éventuellement comment le modifier.
    Cordialement
    Christophe

    Répondre à ce message

  • Bonjour,
    (Un retour...)

    Sous Spip 3.0.13 j’utilise le couteau-suisse et sa lame sommaire auto. Tout fonctionne parfaitement avec #CS_SOMMAIRE dans les squelettes. Sauf que cela ne marche plus dans le cas d’un squelette d’article de surcharge des articles d’une rubrique, type ’article-XX.html’
    Dans ce squelette, les titres (h3) sont mis directement et ne proviennent donc pas du texte de l’article surchargé (qui est vide).
    J’ai essayé différentes choses pour résoudre le problème mais en vain... que faudrait-il donc faire pour que les titres soient reconnus et que le sommaire se monte ?

    Merci beaucoup
    T

    Répondre à ce message

  • 2

    Bonjour,

    dans une rubrique, je souhaite afficher aussi les sommaires des articles de la rubrique. Cela fonctionne bien avec la balise #CS_SOMMAIRE mais par contre les liens générés restent sur la page :

    monsite.com/spip.php ?rubriqueXX#mon_ancre_A

    alors que bien sur je souhaite qu’elle dirige vers l’article en question :
    monsite.com/spip.php ?articleXX#mon_ancre_A

    J’ai regardé du côté des fonds et outils du plugin mais je ne vois pas ce que je pourrais faire...
    et bien sûr, je ne souhaite pas modifier le comportement « normal » du sommaire dans mes articles ...

    Merci pour votre aide !

    • Bonjour,

      Tu as tout à fait raison ! Les liens du sommaire sont toujours ceux de la page courante, et c’est en effet gênant lorsque la balise #CS_SOMMAIRE n’est pas utilisée sur la page de l’article lui-même.

      Je viens d’ajouter un nouveau filtre au plugin pour rattraper ce mauvais comportement. J’ai mis à jour la doc, regarde le paragraphe ci-dessus.

      Tu nous diras si cette réponse te convient.

    • merci beaucoup pour cette mise à jour !
      cela marche impeccablement. Et c’est bien pratique ;)

    Répondre à ce message

  • 5

    Bonjour,

    En passant de spip2 à 3, j’observe que la lame sommaire auto ne fonctionne plus.
    D’autres rencontrent ils se problème ?

    SPIP 3.0.5 [19905]

    • Bonjour, cette lame a pourtant été testée avec succès sous SPIP 3.
      Un autre facteur bloquant peut-être ?

    • Merci de l’attention. Oui c’est cela. Le plugin Associaspip pose problème car :

      La désactivation du plugin « Associaspip » (version : 2.1.0) s’est correctement déroulée

      Dès sa désactivation, la lame fonctionne de nouveau.

      Que faire dans ce cas ?

    • Ah, il faudrait faire un débogage, car je ne connais pas ce plugin ...

    • Bonjour,

      je constate le même problème, mais pas avec un site utilisant le plugin associaspip.
      c’est un site spip 3.0.8, utilisant un thème zpip

    • Suite de mon message précédent :
      tout rentre dans l’ordre, une une fois la réécriture d’URL activée.

      Et cela, pour la lame « Un sommaire pour vos articles » ou pour la lame « glossaire »

    Répondre à ce message

  • Bonjour,
    Je reposte ici un commentaire ouvert sur la page générale du couteau suisse, qui n’était peut-être pas le meilleur endroit :

    J’ai traqué un bug qui surgit de l’alliance entre la lame « sommaire automatique » et le plugin « enluminures typographiques v3 ».
    Le détail :
    1. j’ai installé un spip3.0.4 tout neuf.
    2. je crée une rubrique, un article et j’y inclus une phrase suivie d’une photo avec son titre en utilisant le lien .
    3. je regarde mon article sur le site publique : pas de problème.
    4. J’installe le couteau suisse (1.8.98) avec la procédure automatique, et j’active uniquement la lame « sommaire automatique ».
    5. j’installe le plugin « enluminures typographiques v3 » (3.3.1)
    6. après avoir rafraichi la page des plugins, du couteau suisse, et vidé le cache, je retourne sur l’article en ligne. C’est alors que deux paragraphes ont été ajouté intempestivement autour de mon document :
    -  Un avant le document :

    <p>
    <br class="autobr">
    </p>

    -  Un après le document :
    <p></p>

    Auriez-vous une idée de comment corriger cela svp ?

    Répondre à ce message

  • 19
    Thomas

    Re-bonjour,
    je reviens par ici (on ne s’en lasse pas) car je cherche cette fois à faire reconnaitre par le sommaire les balises (h3, idem à celles dans le texte) du Portfiolio et des Pièces jointes, que j’ajoute à la suite des articles par un :
    [(#INCLURE{fond=inc-documents}{id_article}{env})] (pas loin du #CS_SOMMAIRE d’ailleurs)

    J’ai essayé d’insérer le |sommaire_d_article... Cela marche en partie avec :
    [(#INCLURE{fond=inc-documents}{id_article}{env}|sommaire_d_article)]
    Là en effet les liens « retours sommaire » sont ajoutés aux titres mais les titres ne sont pas inclus dans le sommaire..
    Je sèche... une idée ?
    Merci... merci...

    • Pourtant le sommaire du Couteau Suisse détecte bien les balises <h3>...

      Il me semble que l’activation de la balise #CS_SOMMAIRE bloque toute insertion automatique du sommaire : voila pourquoi le filtre renvoie le texte sans son sommaire...

      Je viens de corriger le plugin pour forcer cette insertion grâce au paramètre {0} :

        [(#INCLURE{fond=inc-documents}{id_article}{env}|sommaire_d_article{0})]

      Plus d’infos : http://zone.spip.org/trac/spip-zone...

    • Thomas

      Merci de cette belle réponse mais, ah, ba.. veut pas..
      j’ai fait la mise à jour (révision 61830-30 mai 2012), ouvert le couteau et enregistré les modifs, inséré le
      [(#INCLURE{fond=inc-documents, id_article, env}|sommaire_d_article{0})],
      puis vidé les caches...Re-calcul de la page...
      et pas de titres en plus dans le sommaire... (les titres ont leur liens vers le sommaire, comme précédemment)..
      zut..

    • Il faut la révision 61831 ;-) Est-ce OK à présent ?

    • Thomas

      Alors.. voui, dans un sens c’est bon.
      C’est à dire que cela crée un second sommaire dédié, juste avec les deux titres (et avec la liste-articles-freres), situé au niveau du Portfolio en bas de page..
      Donc ça marche mais pas exactement comme il faudrait.. un espoir ?

    • Ah bah je croyais qu’avec le code que tu as proposé, c’était ce que tu voulais... Tu veux un seul sommaire grâce à la balise #CS_SOMMAIRE avec des liens en plus c’est ça ?

      Si oui, alors c’est une surcharge du fond/sommaire.html qu’il faut faire, non ?

    • ou alors carrément le code suivant, en rendant active la balise #CS_SOMMAIRE ?

      [(#TEXTE|concat{#INCLURE{blabla}}|sommaire_d_article{1})]

    • Thomas

      Oui, oui, désolé de ne pas avoir été clair.. en effet je cherche à n’avoir pour l’article qu’un seul sommaire qui intègrerait tous les titres et sous-titres de la page y compris Portfolio et Docs joints (s’ils existent dans la page)...
      Le fait de pouvoir ajouter des sommaires supplémentaires est intéressant mais là, c’est un sommaire unique que je souhaite..

      Alors [(#TEXTE|concat{#INCLURE{blabla}}|sommaire_d_article{1})]
      donne effectivement un sommaire complet, comme je veux, mais il est toujours supplémentaire au sommaire initial (j’ai donc deux sommaires, un en haut -incomplet- et un en bas -complet-)

      Je pense que la solution comme tu le dis, serait de compléter le fond/sommaire.html... en ajoutant des li, genre, si je comprends bien :

      <ul>
      [(#ENV*{sommaire})]
      <li>
      id_<objet> => Portfolio (s'il existe)
      </li>
      <li>
      id_<objet> => Documents joints (s'il existe)
      </li>
      </ul>

      Qu’en penses-tu ?
      Mais je ne sais si le Portfolio ou les Docs joints sont désignables par des id_objet...

    • Thomas

      J’ai eu l’idée (sans doute benête) d’ajouter des <mon_ancre> aux h3 des Portolio et DocsJoints dans inc-documents.html... mais ça ne marche pas non plus.

    • Justement, il faut activer la balise #CS_SOMMAIRE pour éviter l’insertion du sommaire automatique dans le texte, mais ne pas l’utiliser (cette balise simplifie le traitement sur une article simple). Il te faut à la place, appeler le filtre INCLURE{blabla}|sommaire_d_article{1} une seule fois sur le texte total à examiner. Ce texte total (un inclure est le mieux pour le conternir en entier) pourrait intégrer le texte de l’article suivi du portefolio.

      Pour la solution alternative (surcharge du fond) il faudrait une option supplémentaire pour extraire la liste de sommaire seule : INCLURE{portefolio}|sommaire_d_article{2}.

      Voici la révision 61832 : http://zone.spip.org/trac/spip-zone...

      Tiens, au niveau des ancres, ça risque de buguer, non ? sauf en cas d’ancres « jolies » peut-être...

      Pour les id_objet dont tu parles, c’est tout flou pour moi !

    • Thomas

      Je crois que je comprends ce que tu veux dire : virer la balise #CS_SOMMAIRE et à la place ajouter simplement le filtre |sommaire_d_article{1} à #TEXTE...
      Je vais essayer ça mais je n’obtiens toujours que la version 61831...

      Pour la soluce alternative, je crois comprendre mais.. ce n’est pas ferme..
      Avec les ancres, pas de bug, non, juste.. rien quoi.

    • Pour les mises à jour, soit tu les fais à la main, soit tu attends le prochain zip fabriqué toutes les heures pile je crois ! Donc now c’est bon...

    • Thomas

      Aaah.. ça se passe à chaque changement d’heure..! d’accord, c’est bon à savoir..

      Donc c’est mis à jour mais cela ne marche pas vraiment. En fait ça met le bazar, même.
      J’ai donc supprimé CS_SOMMAIRE et ajouté le filtre à l’inclusion du texte de l’article :
      [<div class="#EDIT{texte} corptexte">(#TEXTE||sommaire_d_article{1})</div>]
      J’obtiens un sommaire sans les titres voulus (comme avant) et surtout, le texte de l’article est supprimé, c’est à dire que tout ce qui dépend de #TEXTE ne s’affiche plus.

      Je vais creuser tout ça, c’est peut-être une question de syntaxe, ou d’inclusions : dans mon cas en effet l’affichage de l’article, fait appel à article.html qui fait appel à un article-corps.html où est construit l’article (c’est là que se trouve les balises #TEXTE (ci dessus) et également le #INCLUREfond=inc-documents...

    • Attention : pas de double pipe.

      Donc résumons, 2 pistes a priori sans forcément de surcharge de fond :

       

      1. inclusion normale, balise #CS_SOMMAIRE désactivée :
      [(#INCLURE{fond=article-corps}|sommaire_d_article)]

       

      2. inclusion avec sommaire déporté, balise #CS_SOMMAIRE activée :
      Pour le sommaire seul dans article.html :
      [(#INCLURE{fond=article-corps}|sommaire_d_article{1})]
      Pour le corps du texte proprement dit, sans sommaire du coup :
      [(#INCLURE{fond=article-corps}|sommaire_d_article)]

    • Thomas

      Donc moi je reste sur la première piste, mais l’inclusion dans ’article.html’ du #INCLURE ne donne pas le résultat escompté :
      (#CS_SOMMAIRE viré d’article_corps)

      [(#INCLURE{fond=article-corps}|sommaire_d_article)]
      ne charge pas le article_corps,

      [(#INCLURE{fond=article_corps}|sommaire_d_article{id_article}{lang})]
      ne charge pas le article_corps,

      [(#INCLURE{fond=article_corps}{id_article}{lang}|sommaire_d_article)]
      article_corps chargé mais pas de sommaire et liens de retour sommaire des titres en double (sauf pour Portfolio et Docsjoints)...

      Je ne sais pas, peut-être serait-il mieux que je t’envoie par mail les codes des fichiers concernés (histoire de ne pas trop encombrer cet espace de commentaires) ?

    • Attention, l’expression |sommaire_d_article{id_article} est fausse.
      Le paramètre ne peut être que : ignoré, 0, 1 ou 2 (en fonction de la forme voulue en retour).

      Ensuite, je me doute qu’il faille passer l’environnement à article_corps.html, et surtout id_article, sans quoi la boucle (ARTICLES) sera bien incapable de savoir quel article rendre.

      J’en reviens à ce que j’ai déjà dit : le sommaire n’est ajouté automatiquement au texte examiné que si la balise #CS_SOMMAIRE est désactivée.

      La solution n’est pas loin, sans doute la piste 1 en effet. Peut-être faut-il également désactiver la « Création systématique du sommaire » dans la config de l’outil, afin d’éviter les doubles liens de retour sommaire des tites. Mais pour avoir le sommaire quand même, il faut du coup ajouter en clair l’indicateur « [sommaire] » dans article.html pour que le plugin détecte le calcul du sommaire à effectuer sur la totalité de article_corps.html.

      J’espère être clair ! OK pour passer en privé.
      Je te laisse exposer ici la solution finale et fonctionnelle pour nos lecteurs ;-)

    • Thomas

      Je reproduis ici la teneur du mail que je t’ai envoyé car je ne suis pas sûr que tu l’ai reçu :

      -  J’ai donc désactivé la balise #CS_SOMMAIRE et décoché la « création systematique du sommaire » sur la page de config du couteau suisse.

      -  article.html :
      [(#INCLURE{fond=article_corps}{id_article}{lang}|sommaire_d_article)]

      -  article_corps.html :
      [sommaire] -> à la place qu’occupait l’ancienne #CS_SOMMAIRE.

      => Tout est maintenant bien là dans l’article, le sommaire est complet, les titres n’ont bien qu’un lien, le texte de l’article est OK.
      MAIS, le sommaire est placé en premier, en tête de page et avant tout autre élément de la page. Même s’il reste positionné à droite, il n’a plus un comportement « float » (tout est repoussé sous lui).

      J’en suis là, je cherche un moyen de ramener le sommaire à un positionnement choisi (évidemment le résultat est le même où que l’on mette [sommaire] dans la hiérarchie des éléments de article_corps.html).

      Tu peux me répondre par mail si tu as reçu celui que j’ai envoyé via l’interface du site, comme ça je pourrai t’envoyer éventuellement les fichiers en cause..
      Merci encore..

    • Euh non, je n’ai pas vu passer de mail privé... Pour le placement du sommaire, il faut voir au niveau des <div/> comment trouver le meilleur moyen de les répartir entre article.html et article_corps.html... Pas facile en effet ;-) Une idée peut-être tordue, mais pourquoi pas un <div> ouvrant dans article.html et un </div> fermant dans article_corps.html, histoire d’inclure le sommaire dans le bloc encadrant l’article ?

      A priori, le plugin place bien le sommaire automatique en tête du texte examiné.

    • Bon, ok ça marche !

      donc je récapitule :
      -  désactivation de la balise #CS_SOMMAIRE et de la « création systematique du sommaire » sur la page de config du couteau suisse.

      -  [Dans mon cas :] -> article.html :
      [(#INCLURE{fond=article_corps}{id_article}{lang}|sommaire_d_article)]

      -  article_corps.html :
      [sommaire] -> à la place qu’occupait l’ancienne #CS_SOMMAIRE.

      -  > Là on a donc la page article normale avec le sommaire ok, sauf qu’il se trouve seul, tout en haut de la page.

      => Copie dans article.html avant l’inclusion de article_corps, de la/les div qui doivent se trouver au-dessus du sommaire. (perso j’ai même un début de div dans ’article’ et sa fin dans ’article_corps’ .

      On tire ici parti du montage des pages à partir de plusieurs fichiers... En effet, avoir deux fichiers ’article’ et ’article_corps’ pour le montage des pages d’article n’étaient pas vraiment justifié pour moi jusqu’ici (autant tout regrouper en un fichier) mais j’ai bien fait de laisser en état cette fragmentation....

      Donc c’est au poil et je te remercie vraiment de ton aide (+ des modifs du plugin).

      Cela me fait maintenant songer au fait que (tu dis si je saoule, hein...) ce serait chouette de pouvoir appeler dans [sommaire] des modèles de sommaires différents.... Genre avec [sommaire1] on aurait un sommaire monté avec le modèle 1 (par exemple sans articles-freres), avec [sommaire2] on aurait le modèle 2 : les articles de la rubrique (pour un sommaire dans une rubrique)... etc.
      Car là par exemple j’aurais besoin, pour des articles d’annuaire, d’afficher des sommaires sans les articles-frères car trop nombreux.
      En idéal, pouvoir utiliser différents types de sommaires..

    • Ah oui, ce pourrait être une fonctionnalité intéressante. A creuser alors ;-)

    Répondre à ce message

  • 11
    thomas

    Bonjour et comme toujours, un grand merci pour votre travail.

    Je cherche à profiter de la div pliable/dépliable du sommaire de chaque article, pour y ajouter la liste de ses articles-frères (de la même rubrique).Je ne suis pas un crac en prog spip et comme ça fait un bon moment que je cherche, tourne, lis .. en vain (à croire que personne n’a déjà cherché à faire la même chose) j’espere que vous pourrez voir ce qui cloche.

    Pour cela je surcharge sommaire.html (voir code joint) mais cela ne me donne pas le résultat voulu : je cherche à avoir à la suite de l’ul des titres de l’article, l’ul des autres articles de la rubrique, le tout dépliable et repliable...

    <div class="cs_sommaire cs_sommaire_[(#ENV*{fond_css})]_fond" id="outil_sommaire">
      <div class="cs_sommaire_inner">
        <div class="cs_sommaire_titre_[(#ENV*{fond_css})]_fond">&nbsp; <:couteau:sommaire_titre:> &nbsp;</div>
        <ul>
          [(#ENV*{sommaire})]
        </ul>
    	
    	
    	<B_articles_meme_niveau>
    		<ul class="nav_art_freres">
    			<h4><:autres_articles_rubrique:></h4>
    			<BOUCLE_articles_meme_niveau(ARTICLES){lang ?}{id_rubrique=#ID_RUBRIQUE}{par num titre}>                  
    			[<li>#EXPOSE{'',<a href="#URL_ARTICLE">}(#TITRE|supprimer_numero)#EXPOSE{'',</a>}</li>]	
    			</BOUCLE_articles_meme_niveau> 
    		</ul>
    	</B_articles_meme_niveau>
    
    </div>

    Une idée ?
    Merci !

    • C’est tout à fait normal. Le sommaire est un filtre appliqué à un texte dont il ne connait pas la provenance. Actuellement, le plugin ne transmet pas le contexte, s’il existe : il est donc impossible de boucler sur l’article (ou la rubrique, ou la brève) en cours.

      Je viens de procéder à un changement permettant désormais la transmission du contexte id_[objet], s’il existe : http://zone.spip.org/trac/spip-zone....

      Après mise à jour du plugin, Il te faudra donc entourer ta boucle B_articles_meme_niveau par la boucle article du contexte, sans quoi #ID_RUBRIQUE ne correspondra à rien :

          <BOUCLE_article_contexte(ARTICLES){id_article}>
              <B_articles_meme_niveau>
               (...)
              </B_articles_meme_niveau>
           </BOUCLE_article_contexte>

      Par contre, je ne suis pas sûr de la validité HTML de ton <h4>...

    • thomas

      Ah ben, merci beaucoup de cette réponse et même de cette mise à jour du plugin !
      Alors bon, ça marche quoi... que dire de plus, c’est fantastique.
      Je vais regarder maintenant cette question du <h4>.

      Je mets le code qui marche donc maintenant chez moi (si des améliorations sont possibles... ou si cela peut servir à quelqu’un..)

       </ul> <!-- fermeture de l'ul du sommaire -->
      	
      <BOUCLE_recup_context(ARTICLES){id_article}>
      <ul class="nav_art_freres">
      <h4><:autres_articles_rubrique:></h4>
      <BOUCLE_articles_meme_niveau(ARTICLES){lang ?}{id_rubrique=#ID_RUBRIQUE}{par num titre}>                  
      [<li>#EXPOSE{'',<a href="#URL_ARTICLE">}(#TITRE|supprimer_numero)#EXPOSE{'',</a>}</li>]	
      </BOUCLE_articles_meme_niveau> 
      </ul>
      </BOUCLE_recup_context>
      </div>
      </div>
    • thomas

      Ah, finalement il y a un problème, dans la zone privée de l’article-test dans lequel s’applique le sommaire, j’ai une alerte sur des erreurs (voir la capture).
      La ligne pointée dans tmp/couteau-suisse/mes_fonctions.php dit ça :
      foreach($GLOBALS['contexte'] as $i=>$v) if(strncmp($i,'id_',3)==0) $temp[$i] = $v;

      que puis-je faire ?
      Merci encore.

    • OK. Je viens de publier une correction sur le plugin pour éviter cette erreur et transmettre l’id_article en privé sous SPIP 2.1. A titre d’info, le contexte est OK sous SPIP 3 car la partie privée est squeletisée.

    • thomas

      Ah, j’étais en train de te répondre ente tes deux posts, pas grave je finis celui ci et je ferai la mise à jour.
      Alors mon SPIP est le 2.1.12 (avec le plugin Kit-CNRS mais qui à mon sens n’aurait pas beaucoup d’incidences sur ce problème). Pour appeler le sommaire je passe par #CS_SOMMAIRE dans mon fichier article :

      <INCLURE{fond=entete}{id_article}{type_page=article}{lang}>
      
      <BOUCLE_article_principal(ARTICLES){id_article}>
      
      #CS_SOMMAIRE
      
      <INCLURE{fond=article_corps}{id_article}{lang}>
      
      </BOUCLE_article_principal>
      <p><:aucun_article:></p>
      <//B_article_principal>
      
      <INCLURE{fond=pied}{lang}>

      Par contre la partie ajoutée (articles-freres) ne disparait pas comme le fait la partie sommaire...elle n’est pas touchée par le display:none ?... je cherche..

      Merci... encore..

    • thomas

      Donc après mise à jour du plugin, j’ai à nouveau le même message (cf. capture)... arg.
      J’ai vidé les caches (même redémarré wamp... vidé le cache du butineur etc.. sait jamais..quoique quand même). Le sommaire est inchangé.

    • Vérifie bien que le plugin soit en révision 61649 minimum...

      pour le repliement, JS l’effectue sur un next() effectivement. Peut-être pourrais-tu englober tes 2 <ul> par un <div> qui serait bien replié...

      Concernant la validité, est-il possible de mettre un <h4> dans un <ul> ? Ce serait peut-être mieux un <lh>...

    • ... Il faut aussi réafficher la page du Couteau Suisse pour qu’il se recompile.

      Ajout d’un corps repliable : http://zone.spip.org/trac/spip-zone/changeset/61658

    • thomas

      C’est bizarre, tu écris un truc mais je le reçois en deux parties.. à plusieurs minutes d’intervalle... bref.
      Alors oui, j’ai réaffiché la page Couteau Suisse et d’ailleurs j’ai même remodifé les paramètres du sommaire auto (profondeur des intertitres, couper à 40 etc.).

      L’idée du div englobant les deux ul était la bonne, ça fonctionne parfaitement ! Effectivement un lh au lieu d’un h4 est plus correct.

      Je mets le fichier sommaire fonctionnant au poil :

      <div class="cs_sommaire cs_sommaire_[(#ENV*{fond_css})]_fond" id="outil_sommaire">
        <div class="cs_sommaire_inner">
          <div class="cs_sommaire_titre_[(#ENV*{fond_css})]_fond">&nbsp; <:couteau:sommaire_titre:> &nbsp;</div>
      	<div>
          <ul>
            [(#ENV*{sommaire})]
          </ul>
      	<BOUCLE_recup_context(ARTICLES){id_article}>
      
      		<ul class="nav_art_freres">
      			<lh><:autres_articles_rubrique:></lh>
      			<BOUCLE_articles_meme_niveau(ARTICLES){lang ?}{id_rubrique=#ID_RUBRIQUE}{par num titre}>                  
      			[<li>#EXPOSE{'',<a href="#URL_ARTICLE">}(#TITRE|supprimer_numero|couper{40})#EXPOSE{'',</a>}</li>]	
      			</BOUCLE_articles_meme_niveau> 
      		</ul>
      </div>
      	</BOUCLE_recup_context>
        </div>
      </div>

      Tout fonctionne si ce n’est cet affichage en partie privée de l’article concerné par le sommaire qui fait un peu désordre, quoi... je vais continuer à « chercher ».

      Grand merci !

    • Je ne comprends pas, si la balise #CS_SOMMAIRE est activée, alors la partie privée ne montre aucun sommaire... Aucun calcul de contexte donc ! Quelle est la ligne pointée par l’erreur persistante ?

      Attention dans ton exemple le </div> doit sortir de la boucle...

    • thomas

      Alors je pense que les choses rentrent dans l’ordre : j’ai effectué une mise à jour du plugin (révision 61658), et il n’y a plus de message d’avertissement.
      J’ai en outre sorti le /div de la boucle.
      Tout à l’air nickel, quoi. Le pied.

    Répondre à ce message

  • 1

    Bjr ! Découpe + sommaire : peut-on supprimer le p1, p2, etc... ? Si quelqu’un voit où ça se trame... Merci !

    • Oui depuis la dernière révision du Couteau Suisse : http://zone.spip.org/trac/spip-zone....

      Pour éviter la mention des pages, placer la fonction suivante dans config/mes_options.php.

      function sommaire_id_page($element, $page) {
      	return $element;
      }

      Rappel de la fonction native :

      function sommaire_id_page_dist($element, $page) {
      	return $page ? $element . _T('couteau:sommaire_page', array('page'=>$page)) : $element;
      }

    Répondre à ce message

  • 3

    Salut Pat

    Est ce envisageable que la lame prenne en compte {{{-# }}} et {{{-## }}} ?

    • Salut. Tu veux dire en plus des intertitres ? Pourquoi tu voudrais qu’une liste apparaisse dans le sommaire ?

    • Slt

      L’idée c’est pou que dans un grand article comme http://www.economiedistributive.fr/article40 tu t’y retrouve facilement et que tu sache à quel chapitre tu en ai.

    • Là ton article me semble nickel avec les <h3> et <h4>, quoi demander de plus ? Des listes d’items n’ont pas tellement vocation à faire partie de la titraille à reprendre dans une table des matières selon moi...

    Répondre à ce message

  • 13

    Bonjour et super merci pour cette magnifique lame :-)))
    Grâce aux explications de cette page, j’ai réussi à bien personnaliser mon sommaire.

    J’aimerai maintenant aller plus loin en affichant les titres de niveau 1 en gras ou, encore mieux, en gras et en plus grand ; pour qu’ils se détachent mieux .

    J’ai testé divers trucs, sans succès.

    Quelqu’un pourrait-il m’aider ?

    • Pour avoir que le premier niveau en gras, ne serait-ce pas un truc du genre :

      .cs_sommaire_inner>ul>li>a {
      	font-weight: bold;
      }

      Tu peux manipuler tout ça avec le couple firefox/firebug...

    • Ça marche : merciiiii Pat !

      Donc, si ça peut servir à une autre personne qui souhaiterait que les titres de niv1 soient plus grands et en gras, j’ai indiqué :

      .cs_sommaire_inner>ul>li>a { 
      	font-weight: bold;	
      	font-size: 115%	
      }

      J’avais une autre question : même en lisant et relisant le paragraphe « Les liens de retour au sommaire », mon niveau en php est tellement nul que je ne sais pas ce qu’il faut écrire pour que les liens soient à la fin des intertitres plutôt qu’au début.

    • function sommaire_lien_retour_dist($self, $titre) {
        static $haut = NULL;
        if(!isset($haut)) 
          $haut = '<a title="'._T('couteau:sommaire_titre').'" href="'.$self.'#outil_sommaire" class="sommaire_ancre">&nbsp;</a>';
        return $titre. $haut;
      }
    • Bonjour ? et merci pour ta réponse.

      J’ai donc surchargé mon fichier /config/mes_options.php avec les lignes de code ci-dessus mais cela fait apparaître toutes les pages de mon site comme blanches.

      Par contre, quand j’essaie le code donné par Patrice pour ne pas avoir de liens de retour du tout, cela fonctionne.

    • Je me réponds à moi-même car j’ai trouvé la coquille (dist en trop dans la première ligne)

      function sommaire_lien_retour($self, $titre) {
        static $haut = NULL;
        if(!isset($haut)) 
          $haut = '<a title="'._T('couteau:sommaire_titre').'" href="'.$self.'#outil_sommaire" class="sommaire_ancre">&nbsp;</a>';
        return $titre . $haut;
      }

      Et maintenant, ça marche super, merci à tous :-)

    • Pour Stef plus spécialement :

      J’ai par coïncidence reconnu ton design du Sommaire sur ta page d’application pédagogique http://www.steph-en-bretagne.com/personnalisations-avancees/sommaire-du-couteau-suisse, page dont je me suis aussi inspiré.

      Puisque tu es arrivé à cela et que tu l’as détaillé, j’ai deux questions subsidiaires :

      — Comment faire en sorte que l’icone de “lien de retour au sommaire”, une fois placée à la fin des intertitres, soit séparée du dernier mot de l’intertitre par &nbsp; (et non pas collée au dernier mot de l’intertitre).

      — Comment faire précéder chaque item du Sommaire par &bull;&nbsp; (sans que ceci doive être saisi au début de chaque intertitre, bien sûr).

      Merci si tu as le temps.

    • Salut frdm,

      Malheureusement, mon niveau est trop bas pour que je sache te répondre (je ne sais même pas ce que signifie &bull et j’ai pas trouvé non plus sur Internet).

      Moi aussi je me suis demandé comment décoller l’icône de retour au sommaire mais j’ai pas osé revenir demander.

      Toutes ces lacunes m’ont amené à m’inscrire à une formation de dév informatique à l’AFPA, alors, j’aurai probablement la réponse d’ici mai :-D mais si d’autres pouvaient te répondre avant ce serait quand même plus rapide ... et je pourrai compléter mon article en plus :-)

      A+

    • Pour l’espace insécable, voici la fonction de surcharge. La modif est mineure :

      // Surchage de la lame "sommaire automatique" du couteau suisse 
      // Permet de placer les puces de retour au sommaire après les intertitres plutôt qu'avant
      function sommaire_lien_retour($self, $titre) {
        static $haut = NULL;
        if(!isset($haut)) 
          $haut = '<a title="'._T('couteau:sommaire_titre').'" href="'.$self.'#outil_sommaire" class="sommaire_ancre">&nbsp;</a>';
         return $titre . '&nbsp;' . $haut;
      }

      En ce qui concerne &bull; c’est à mon avis les li qu’il faut styler grâce aux CSS.

    • Peut-être essayer :

      div.cs_sommaire ul li {
      	list-style-type: disc;
      	margin-left: 1em;
      }

      Et si on veut les disques sur un seul niveau :

      div.cs_sommaire_inner>ul>li {
      	list-style-type: disc;
      	margin-left: 1em;
      }
    • Salut Pat,

      Ça marche :-) Je viens de tester ton code php pour décoller l’icône de retour au sommaire et c’est nickel. Un super merciiii !

      fdrm,

      Tu pourras essayer le code css et nous montrer ce que ça donne avant/après ? Une petite image explique souvent mieux que mille mots...

    • Merci Pat pour ces indications.

      Voici ci-après (image) ce que j’ai obtenu.

      Voici ci-dessous comment (je récapitule à partir des indications ci-dessus et consultées : des variantes et modifications plus poussées y figurent, mais ci-dessous je mentionne seulement ce qui m’a convenu comme résultat ; Stef a annoncé une récapitulation qui sera complétée ici).

      — Dans mes_options.php
      j’ai inséré :

      // Surchage de la lame "sommaire automatique" du couteau suisse 
      // Permet de placer les puces de retour au sommaire apres les intertitres plutot qu'avant (avec &nbsp;)
      function sommaire_lien_retour($self, $titre) {
        static $haut = NULL;
        if(!isset($haut)) 
          $haut = '<a title="'._T('couteau:sommaire_titre').'" href="'.$self.'#outil_sommaire" class="sommaire_ancre">&nbsp;</a>';
         return $titre . '&nbsp;' . $haut;
      }

      — Dans perso.css.html
      j’ai inséré :

      .cs_sommaire {
              margin-bottom:40px !important;
               width:100% !important;
       }
      div.cs_sommaire ul li {
      	list-style-type: disc !important;
      	margin-left: 1em !important;
      }
      .cs_sommaire_inner>ul>li>a {
              font-weight: bold; font-size: 105%;
              padding: 0 0 10px 0;
      }

      Il me reste à solliciter la bienveillance sur les trois points suivants :

      — Dans le Sommaire, je désire augmenter la taille des items de niveau 2 ; j’ai tâtonné mais je n"y arrive pas.

      — Je ne sais pas où placer l’image coin.gif modifiée pour surcharge (en l’occurrence, fond d’image #fafafc au lieu de blanc) : j’ai essayé dans squelettes/images/, dans squelettes/images/sommaire/, et encore d’autres essais, mais je n’ai pas trouvé l’emplacement efficace.

      — Je cherche à augmenter le nombre limite de caractères prévu dans le paramétrage de la lame, pour les items dans le Sommaire. S’agissant d’intertitres littéraires ou juridiques, il est normal qu’ils soient longs et explicites et se déploient sur deux lignes dans le sommaire (ce qui pose plus largement le problème de la gêne beaucoup plus considérable et là peu compréhensible s’agissant de présentation en “ligne unique” de la saisie des champs "Titre" [et “Surtitre” et “Soustitre”] des articles dans Spip, mais bon, vaste question…).

    • Pour Stef : &bull; c’est ceci :
      (“bull” pour “bullet” en anglais).

    • Ok, merci pour les explications et l’image frdm :-) J’ai mis à jour mes explications avec les nouveautés d’aujourd’hui, je repasserai sans doute la semaine prochaine si j’ai un peu de tps voir si ça a avancé.

    Répondre à ce message

  • Naldreys

    Bonjour,

    J’ai une petite question. J’utilise la lame Sommaire Automatique, quand et j’active a lame Ancre douce.
    Un phénomène bizarre s’exécute. En effet après avoir atteint l’ancre désiré, un retour systématique a la feuille sommaire.html du site s’effectue.

    Cette anomalie n’est t’elle pas liée à un conflit entre le nom de la feuille sommaire.html et la balise [sommaire] positionnée dans l’article dédie au sommaire automatique

    Comment réglé ce problème ?

    Merci d’avance.

    Répondre à ce message

  • Bonjour,

    Dès fois que cela puisse intéresser, j’ai modifié le comportement de la boite sommaire afin qu’elle devienne « draggable », ou déplaçable. J’ai surchargé le fichier fonds/sommaire.html et la css qui va avec. Il y a peut être plus propre à faire car le hack est un peu alambiqué.

    Le résultat est ici :
    Sans découpe : http://www.jp.guihard.net/spip.php?article133 ;
    Avec découpe : http://www.jp.guihard.net/spip.php?article130.

    Voici la modification faite en sommaire.html :

    //je court-circuite en surchargeant la fonction cs_sommaire_init()
    //de la lame sommaire automatique du couteau suisse
    //le but du jeu est de deplacer la boite, de recuperer 
    //l'event stop pour court-circuiter le changement de class 
    //de la barre de titre.
    //On initialise la variable $dragge &agrave; faux, puis on la met 
    //a vrai si draggage de la boite ce qui court-circuite 
    //le toggleClass via le .click( function)
    
    //j'initialise la variable $dragge a false. Cette variable 
    //recueille si la boite de sommaire a ete ou pas deplacee
    
    $dragge = false
    
    //surcharge de la fonction du CS
    function cs_sommaire_init() {
    	//met la boite en draggable via son id outil_sommaire
    	$("#outil_sommaire").draggable({ 
    	// applique une opacite de 45 lors du draggage
       	opacity: 0.45 ,
       	scroll: false ,
       	//met la variable dragge a vraie car vient d'etre deplace
       	stop: function() {
    	$dragge = true;
       	}
       });
    
    	jQuery(sommaire_sel, this)
    	.cs_todo()
    	.click( function(){
    		if (!$dragge){ 
    		jQuery(this).toggleClass('cs_sommaire_replie')
    		.next().toggleClass('cs_sommaire_invisible')
    		// annulation du clic
    		return false;
    		}else{
    		if($dragge){
    		$dragge = false;
    		}		
    		}
    	});
    }

    Répondre à ce message

  • 2

    Bonjour.

    J’ai une petite qustion, peux être quelqun à déjà été confronté au problème ?
    J’utilise la baslie #CS_SOMMAIRE, dans un squelette inclu et la balise #TEXTE se trouve dans un autre squelette inclu.

    Le sommaire ne fonctionne plus alors qu’il fonctionnait très bien avant que je ne divise mon squelette article en 2.

    Y a t’il un moyen de le faire fonctionner malgré tout ?

    • Deux solutions (non testées) a priori, à condition de passer id_article dans ta noisette, non ?

      1. Une boucle ARTICLES : <BOUCLE01(ARTICLES){id_article=#ENV{id_article}}>#CS_SOMMAIRE</BOUCLE01>

      2. Hors boucle spécifique, un paramètre (version du CS >= 1.8.36.00) : #CS_SOMMAIRE{#ENV{id_article}}

      Je viens de modifier l’article pour expliquer mieux l’usage de cette balise.

    • Merci c’était effectivement cela. J’aurais du y penser.

    Répondre à ce message

  • 3

    Bonjour,

    J’utilise systématiquement la lame « Un sommaire pour vos articles » que je trouve excellente.

    Cependant je souhaite la rendre inopérante sur la page d’accueil du site où je fait apparaître un Edito et des articles, et là, malheureusement le sommaire apparait dans l’Edito et les articles !

    Comment faire en sorte que le sommaire apparaisse sur tous les articles du site mais pas sur la page « sommaire.html » ?

    Existe-t-il un balise à insérer pour neutraliser cette lame sur une page squelette donnée ?

    Cordialement

    FDG

    • Oui en rajoutant une * sur les balise #TEXTE de ton sommaire.

    • Oui Pierre, mais pour re-bénéficier des traitements de la balise #TEXTE :

      [(#TEXTE*|concat{#EVAL{_CS_SANS_SOMMAIRE}}|cs_traitements{TEXTE,articles})]

      Je viens de modifier l’article ci-dessus afin de parler de cette astuce. Le sommaire automatique est en effet ajouté à toutes les balises #TEXTE, sans aucune distinction de contexte...

    • Correctif :  : Depuis la révision 43782 du Couteau Suisse, la notation précédente est caduque. Ceci :
      [(#TEXTE*|concat{#EVAL{_CS_SANS_SOMMAIRE}}|cs_traitements{TEXTE,articles})]
      doit être remplacé par cela :
      [(#TEXTE*|cs_traitements{TEXTE,articles,sommaire_d_article})]

    Répondre à ce message

  • 3

    Bonjour et bravo à tous les programmeurs et les contributeurs.
    Je vous dois plus d’une fière chandelle et j’éprouve une certaine fierté à pouvoir réussir à comprendre un centième de ce que vous faites.
    Vous êtes vraiment impressionnants.

    J’ai une petite question et un petit exercice pour vous d’ailleurs :
    Voilà, pourrait-on faire en sorte que le sommaire une fois construit, suive le scrolling ? Comme ça, on n’aurait pas besoin de remonter à chaque fois ;.)
    un sommaire flottant en quelque sorte.

    Merci les gars (et les filles bien sur)

    • Bonsoir

      Effectivement ça pourrais être une bonne idée quand on a un article long.

      Je regarde si je trouve la solution et comment l’adapter dans la lame.

      Amicalement.

    • Oui, a priori c’est une question élémentaire de CSS... Google est ton ami !

      En ce qui concerne la boîte du sommaire, le sélecteur est : div.cs_sommaire. Tu peux donc configurer par exemple ta boîte avec la position fixed :

      div.cs_sommaire {
          position: fixed;
      }
    • Merci les gars (on attend les filles ;.)
      Pat, si tu peux me dire où placer le code, je vais essayer de mon coté. En bidouillant comme d’hab.
      Merci encore

    Répondre à ce message

  • 1

    Bonjour,

    Par défaut, le fait de mettre des intertitres dans un article génère un cadre sur la droite de l’article avec des liens pour une navigation rapide.
    Cette fonction est bien pratique.
    Mais est-ce possible de la désactiver dans certains cas ?
    Merci,
    Jean

    • Jean, je parie que si tu prends la peine de lire cet article, tu trouveras la réponse ;-)

    Répondre à ce message

  • 2

    Hello,

    ce sommaire automatique est SUPER !

    Mais :
    -  il n’est pas compatible avec le plugin inclure_ajaxload de Arno : les ancres du sommaire se mettent à pointer vers spip.php#nom-de-lancre (càd la page sommaire....)
    -  il n’est pas totalement compatible avec textwheel : j’avais testé il y a longtemps et constaté des problèmes d’apparence du sommaire, si je me souviens bien...

    Y aurait il moyen de pouvoir utiliser cette lame même sur un contenu chargé par inclure_ajaxload... http://plugins.spip.net/Inclure-Ajaxload ?

    • A noter un autre problème d’une lame du CS avec inclure_ajaxload : la lame ancres_douces provoque des trucs vraiment étranges : délais de réaction - parfois - de plusieurs secondes avant de scroller + impossibilité de scroller à nouveau pendant plusieurs secondes après avoir scrollé, etc, même pour des ancres « normales » codées html en dur (pas issues du sommaire auto donc). Ces problèmes disparaissent quand on désactive la lame ancre_douce : le javascript persiste induement longtemps à fixer la position !

    • par contre, les ancres_douces en plugin indépendant ne provoquent pas ce pb !

      Il semble qu’il y ait bien un truc du côté de leur intégration au couteaus suisse alors...

    Répondre à ce message

  • 2

    Bonjour,
    Grand bravo pour ce plugins, il fonctionne plutot bien mais lorsque je clique dans une rubrique du sommaire, celle-ci m’envoie bien sur la position mais qq secondes apres la page se recharger et m’envoie sur la page accueil.
    Pour voir :
    http://www.projet22.com/ovni-ufo/histoire/article/les-freres-horten-histoire-des

    Merci pour votre aide

    • Bonjour, c’est exact. Mais IE ne le fait pas... Est-ce dû aux ancres douces ?

    • Effectivement sous ie, ca marche correctement, c’est sous ff le probleme...

      Je viens de désactiver dans le couteau suisse : Ancres douces et cette fois-ci ca marche sous ff

      Merci....

    Répondre à ce message

  • 1

    Bonjour,

    Tous nos remerciements, tout d’abord, pour ce plugin !

    J’ai paramétré le plugin dans le couteau suisse pour avoir le sommaire automatique.

    Problème : je rencontre un petit « effet de bord » avec le plugin « Envoyer l’article aux amis » :
    http://www.spip-contrib.net/Envoyer-l-article-aux-amiEs
    Le formulaire de ce plugin est fermé par défaut, ce n’est qu’en cliquant sur un lien « Envoyer par mail » qu’il va s’ouvrir.

    <div id="envoiamiMessage">#ENV{message}</div>
    <a href="javascript:void(0);" class="envoiamiBouton">Envoyer par mail</a>

    Or, bizarrement, dans le cas d’articles avec sommaire, ce formulaire apparait déjà ouvert...
    ex. http://tinyurl.com/28dlvgu
    Le problème se pose uniquement dans le cas des articles avec sommaire, et non pas dans le cas des articles sans sommaire, c’est donc bien un effet de bord du « sommaire automatique ».

    Auriez-vous une idée de l’origine du problème SVP ?

    UN GRAND MERCI D’AVANCE !

    • Je rencontre un autre petit « effet de bord » !

      Cette fois-ci avec le plugin : Freepaper (visionneuse PDF)
      http://www.spip-contrib.net/Le-plugin-FreepapeR-2-v0-9-0

      Dans mon squelette ARTICLE, entre le chapo et le texte, j’ai ceci :
      [(#FPP2STD{largeur=700}{hauteur=600}{trace=false})], c’est l’appel à cette visionneuse PDF

      Or, bizarrement, quand je place [!sommaire] dans le texte de mon article pour éviter l’affichage du sommaire automatique, eh bien la visionneuse PDF apparait ... bien qu’il n’y ait aucun PDF à l’intérieur ! (le sommaire n’apparait plus par contre, c’est déjà çà...)

      Bien entendu, cette visionneuse PDF n’apparait en principe que dans les cas où il y a des PDF, autrement elle n’a aucune raison d’apparaitre...

      MERCI POUR VOTRE AIDE :-)

    Répondre à ce message

  • MasterJuh

    Bonjour à tous,

    J’installe un site en SPIP 2.1.1 et ce plugin marche très bien excepté lorsqu’un article commence par un texte encadré

    [( mon paragraphe )]

    (code du plugin Enluminures typographiques pour SPIP 2 & Porte plume). Dans ce cas, la place pour le sommaire est bien créé dans le texte mais le sommaire n’apparaît pas.

    ça fonctionne par ailleurs avec une citation

    <quote></quote>

    en début d’article

    ça ne m’empêche pas de l’utiliser mais je remonte l’observation.

    Répondre à ce message

  • Hello Patrice,

    Comme tu le vois, toujours fidèle au poste d’utilisateur convaincu, beta testeur et feedbacker pénible à souhait, et là ca tombe bien, j’avais justement 2 ou 3 feedbacks à te soumettre :-D

    J’ai testé ces derniers temps, la version Standalone de cette fonctionnalité, le plugin Table des Matières qui, s’il ne va pas aussi loin que la lame dans l’affinage des réglages proposés — notament la profondeur ou le fait que la lame s’adapte parfaitement à une nomenclature de titre différente du h3.spip standard, ce qui n’est pas le cas du plugin — apporte cependant une base simplifiée et une certaine souplesse pour son intégration, qui n’est pas pour me déplaire et ferait gagner la lame en efficacité je pense.

    (Enfin... disons surtout que ça m’éviterait d’avoir à hacker le CS à chaque fois que je m’en sers, ce que je n’aime pas faire car c’est rarement évolutif un hack, surtout quand il est commis par quelqu’un qui comme moi, maitrise PHP avec 2 pieds gauche et la cervelle d’une moule de Mer du Nord :-D )

    On attaque :

    surcharges dans /fonds ???

    D’un point de vue « usages Spipiens » (si je puis dire...), le passage par le dossier /fonds me déroute un peu. Pas que je sois bêtement puriste (quoique, si un peu en fait :-D) mais j’ai du mal avec cette conception, car dans spip, historiquement, ce dossier sert avant tout à contenir le HTML que nos plugins injectent dans la partie privée. Du coup, le réflexe de créer un dossier /fonds dans son dossier squelettes n’est pas naturel, comparé à un dossier /inclure ou même, beaucoup mieux pour ce cas précis : un dossier /modeles qui aurait l’avantage de permettre je pense, plus de flexibilité sur l’utilisation finale de l’outil par l’ajout par exemple, de paramètres.

    On peut par exemple immaginer une composition d’article_a.html qui embarquerait un #MODELE{sommaire}{profondeur=2}{jolies_ancres=oui} et une composition article_b.html qui pour le coup embarquerait #MODELE{sommaire}{profondeur=1}{jolies_ancres=non}

    C’est une simple idée ;)

    Forcer le CSS+JS par défaut ???

    Une autre réflexion sur l’outil, lorsque intégré « out of the box » :

    Est-il vraiment nécessaire de livrer cet outil avec tout son CSS et Javascript ? Par expérience, le sommaire ne s’est jamais adapté du premier coup à la charte en vigueur sur le site, ce qui me semblerait pourtant un comportement par défaut plus logique, laissant malgré tout une class CSS disponible pour que l’intégrateur puisse y apporter les améliorations qu’il souhaite, en adaptant au besoin le modèle HTML d’origine.

    Idem pour le javascript de dépliage/repliage, que pour ma part je n’utilise jamais et supprime systématiquement de mon modèle HTML de sommaire et qui, en dehors d’ajouter dans nos head une dose de JS pas forcément souhaitable d’un point de vue performance, fait surtout un peu doublon avec l’outil déplier/replier, également dispo dans le CS et qu’on pourrait tout ç=à fait intégrer au besoin dans un modèle si vraiment on en avait envie non ?

    Disons que là, pour le coup, plus qu’un soucis technique, c’est une réflexion sur les usages les plus courants de l’outil que je cherche à initier. La majorité des utilisateurs souhaite t’elle un sommaire ne reprenant pas sa charte graphique par défaut et équipé d’un gadget pour le déplier replier ? Ou bien sont-ce là des besoins ponctuels, qui auraient été généralisés peut être un peu vite ?

    Ou sinon, si le concept du #MODELE paramétrable de tout à l’heure te parait intéressant, pourquoi ne pas conditionner également ces aspects là ? Ex : #MODELEsommairecss=oui|nonjs=oui|non

    chaque choix permettant, si ’non’ est choisis, de ne pas passer dans le tunnel d’ #INSERT_HEAD ce qui n’est pas réellement nécessaire à la page ?

    Liens retours vers sommaire

    Bon là j’avoue je pinaille :-D Mais je voulais savoir s’il était possible de faire en sorte que les liens de retour vers le sommaire soient éventuellement positionables ailleurs que dans le constituant le titre ? L’idéal étant même de pouvoir les positionner après le bloc de texte précédant le suivant :

    <hN>mon super titre</hN>
    
    mon super texte de la mort qui tue la vie qu'il est trop bien que je sais vachement bien écrire pour ne rien dire et remplir l'espace...
    
    et hop => lien retour ici
    
    <hN> mon super titre d'après</hN>

    Alors on me dirait, et ce serait vrai, qu’un coup de CSS devrait pouvoir gérer l’affaire mais d’un point de vue sémantique, c’est dans le HTML qu’il faudrait le repositionner, laissant ainsi au leur rôle de titre et non de conteneur à lien d’access.

    Peut être encore un super paramètre pour mon super #MODEL de tout à l’heure ?

    #MODELE{sommaire}{css=non}{js=non}{lien_retour=oui}{position_lien_retour=apres_titre|apres_texte}

    Mes 2 centimes et demi, et merci de m’avoir lu jusque là :-D

    Répondre à ce message

  • 8

    Merci pour l’introduction des ancres nommées !

    La ligne 8 de la fonction redéfinie est dans le texte ainsi :
     $a = preg_replace(',[^a-z0-9_]+,', '_', $a);
    mais ne devrait-ce pas plutôt être :
     $a = preg_replace(',[^a-zA-Z0-9_]+,', '_', $a);
    _ ?

    Par ailleurs, on complètera utilement par un
     $a = trim ($a, '_');

    • Avec strtolower() juste avant, à mon avis ce n’est pas nécessaire d’avoir A-Z

      Sinon, le trim() sur ’_’ est une bonne idée, je l’ajoute de suite !

    • Oui c’est vrai !
      Ok.

    • Finalement, je viens d’ajouter un paramêtre de configuration dans l’outil pour ces ancres. La fonction était un peu complexe, autant l’intégrer directement... Par défaut, on reste comme précédemment : outil_sommaire_NN.

    • Bon ben je vois que mon idée des fragments nommés a fait son chemin Coool :-)

      Par contre chez moi, depuis la mise à jour du plugin, j’ai un petit problème, très probablement en lien avec les enluminures typos du porteplume.

      Car dans mon site j’ai définis mes 6 niveau de titre, soit
      <hN class="hN">

      Et depuis la maj du plugin, tous mes se retrouvent désormais affublés d’une class h2 en plus, soit <hN class="hN h2"> d’où bugs à l’affichage et inter-titres qui se ressemblent tous.

      Je ne sais pas encore si c’est lié mais je continue mes recherches...

      En tout cas je me joins à Jean Luc pour les remerciements, cette modif apporte vraiment un GROS plus en terme de SEO, surtout depuis que Google savait lire et afficher dans ses résultats le contenus des liens internes d’où ma suggestion initiale pour textualiser un peu les fragments :-)

    • Merci pour ces retours. As-tu avancé sur cette histoire de classes ? As-tu un lien public du problème ?

      Tu as défini les classes avec CFG j’imagine... En fait, l’outil de découpe calle les classes des <hN> sur celles de SPIP et SPIP ne permet nativement de définir uniquement h3. Du coup, si la classe principale de <h3> est « h3 », tous les titres hN seront également « h3 ».. J’imagine qu’avec les CSS, ya pas vraiment besoin d’avoir des classes différentes « hN » sur chaque balise <hN>... Enfin, si j’ai bien compris ce que tu disais...

    • Bon, j’ai déposé une correction qui prend en compte les définitions de la btv3. En résumé, pour un titre h4 par exemple :

      • si la globale $debut_intertitre_2 (définie par CFG) existe, on la prend
      • sinon :
        • si la globale $debut_intertitre contient un h3, on la prend en remplaçant h3 par h4
        • sinon, on la prend telle quelle, annulant alors la hiérarchisation des sous-titres

      La dernière révision règle-t-elle ton problème ?

    • Tu as défini les classes avec CFG j’imagine... En fait, l’outil de découpe calle les classes des sur celles de SPIP et SPIP ne permet nativement de définir uniquement h3. Du coup, si la classe principale de <h3> est « h3 », tous les titres hN seront également « h3 »..

      Je suis passé par CFG oui. Sachant que de base, chez moi je modifie le {{{titre}}} pour qu’il me renvoit un h2 et non un h3.spip d’où le fait que les class h3 qui auraient du selon ta théorie se rajouter, aient été remplacée par des class h2 probablement...

      J’imagine qu’avec les CSS, ya pas vraiment besoin d’avoir des classes différentes « hN » sur chaque balise ... Enfin, si j’ai bien compris ce que tu disais...

      Ben disons que dans une démarche globale d’intégration web, c’est extrèmement puissant. C’est une méthode basée sur le travail de Nicole Sullivan et dite du « CSS Orienté Objet ». Depuis que j’applique je dois dire que d’une :

      • mes feuilles de styles sont beaucoup moins bordéliques
      • je gagne en temps sur chaque intégration, c’est un bonheur.
    • Ouep ! Tout est revenu à la normale. Merci beaucoup :)

    Répondre à ce message

  • 1

    Bonjour,
    Est possible que le sommaire affiche plusieurs niveaux de titre

    comme dans wikipédia ?

    Répondre à ce message

  • 4

    Bonjour

    est-il possible de n’afficher que X entrées dans le sommaire ? Le but serait d’avoir une hauteur fixe pour ce sommaire et disposer d’un ascenseur si les entrées sont plus nombreuses...
    Merci pour ton retour.

    • C’est possible de le faire en CSS, non ?

      div.cs_sommaire {
        height:16em;
      }
    • Ca marche comme prévu !

      Par contre, en relisant le sujet (dont j’ai vu que tu avais ajouté les exemples, bravo), j’avais compris que le fichier mon_squelette/outils/sommaire.css.html viendrait « en plus » de celui présent dans le plugin.
      J’avais donc ajouté seuklement le « height » dans le fichier présent dans mon dossier mon_squelette.
      Mais a priori, non, il faut que tous les styles soient dans le fichier dans mon_squelette, dès lors celui du plugin est ignoré.

    • Exact. Il s’agit d’une surcharge. l’exemple que je donne peut être placé dans n’importe quel autre fichier CSS de ton squelette...

    • En fait, j’utilise le squelette AHUNSTIC et je n’avais pas vu que celui-ci surchargeais déjà la largeur du sommaire.

      Tout marche. Merci.

    Répondre à ce message

  • 1

    J’ai vu qu’on pouvait changer le nombre de caratères pris en compte pour chaque titre par contre j’aimerais beaucoup savoir comment changer la largeur du sommaire pour éviter les retours à la ligne.

    Merci d’avance.
    ==
    Laurent

    • C’est possible de le faire en CSS, non ?

      div.cs_sommaire {
        width:10em;
        white-space:nowrap;
      }

    Répondre à ce message

  • 1

    bonjour,

    petite question : Où peut on modifier la position du lien qui est ajouté dans les intertitres vers le sommaire ?
    En effet, je voudrais qu’il soit à la fin de mon intertitre plutôt qu’au début.

    • Salut, je viens d’ajouter au plugin la possibilité de modifier ce comportement. Je te laisse le soin de le découvrir dans l’article ci-dessus !

    Répondre à ce message

  • @ Patrice Vanneufville

    La cerise sur le gâteau.
    J’ai installé la MàJ.
    Les points d’interrogation sont bien apparus comme prévu, après avoir fait un petit tour par la page … ?exec=admin_couteau_suisse, pour recompiler.

    J’ai longtemps hésité à installer ce plugin qui me semblait un peu usine à gaz, mais à l’usage je ne regrette pas. La désactivation du cache me fait gagner beaucoup de temps en développement. Je vais maintenant explorer le reste des fonctions…

    Merci.

    Répondre à ce message

  • 1

    SAV ouvert le dimanche !

    On se sent de suite moins seul.

    Non, je n’utilise pas la découpe en page.
    Je veux juste faire la liste des questions qui renvoie vers les réponses plus bas.
    J’aurai pu le faire avec des blocs dépliables, mais pour ça il faut faire un squelette en plus, tandis que là une simple balise dans la rédaction quand le besoin s’en fait sentir, et le tour est joué ! (il faut quand même un peu jouer avec les css… mais on n’a rien sans rien !)
    Merci, je vais télécharger la nouvelle version et je fidebaque.

    Il faut peut-être attendre la prochaine mise à jour de Spip-zone ?
    Je crois que c’est toute les heures ?

    Répondre à ce message

  • 1

    Ce plugin est très utile. Merci.

    J’ai voulu m’en servir dans une page de FAQ, où il devait très naturellement trouver sa place.

    Mais pas moyen de faire apparaître les points d’interrogation qui ponctuent chaque question (intertitre) dans le sommaire.

    Les «  ? » apparaissent bien dans le texte complet.

    J’ai essayé un insécable &nbsp; entre le texte et le «  ? » ; sans succès.

    Certainement, une prérogative du filtre « couper() » ?

    Existe-t-il une solution sans bidouiller dans le code du plugin ?

    En fait, l’idéal pour ma présentation, ce serait la possibilité de pouvoir carrément débrayer le filtre « couper() » dans le plugin.

    • C’est exact, en fait le plugin retire certaines ponctuations à la fin des titres : « !?,;.: », histoire d’être plus présentable, mais on pourrait en effet garder le « ! » et le « ? »...

      En fait, ceci est fait car la virgule utilisée pour les pages ne convient plus dans ce cas.... Utilises-tu la découpe en pages ?

      Je viens de faire une correction qui assouplit la supression de la ponctuation en fin de lien.

    Répondre à ce message

  • 1
    Billou

    J’ai un léger soucis, je n’arrive pas à surcharger le fichier sommaire.css.html… Pourtant je l’ai bien mis dans les bons dossiers, mais rien n’y fait.

    J’ai bien réussi à faire la manip pour que le sommaire soit replié de base, mais j’ai voulu faire des modifications sur le style, mais aucune de mes modifications ne passe.

    Le fait que j’ai coupé le cache pour bosser dessus n’a pas d’influence ?

    • Vu que le CS compile tous ses fichiers, il faut absolument recharger sa page de config pour qu’il prenne en compte ces changements... À confirmer ?

    Répondre à ce message

  • 3

    Bonjour,

    Il y avait longtemps que je n’étais venu avec des questions « basiques »...

    En voilà deux nouvelles :

    1) Comment faire pour que le cadre « sommaire » (sommaire automatique) soit replié systématiquement ?

    2) Si je ne veux pas utiliser le fond, je dois mettre dans le texte de l’article [!fond] ?. Y-a-t’il un moyen de systématiser cela pour tous les articles ? Dans le squelette ?

    Merci de votre aide.

    • J’avoue être aussi intéressé pour savoir comment faire pour que le cadre de sommaire soit replié de base.

    • Facile. Pour les deux questions, il suffit de surcharger le fichier fonds/sommaire.html :-)

      1. Dans le fichier fonds/sommaire.html surchargé, il faut ajouter deux classes pour que le sommaire soit replié :
      -  cs_sommaire_replie : class="cs_sommaire_titre_[(#ENV*{fond_css})]_fond cs_sommaire_replie"
      -  cs_sommaire_invisible : <ul class="cs_sommaire_invisible"> à la place de <ul>

      Attention, le sommaire sera systématiquement replié lorsque le visiteur arrive sur la page pour la première fois. Mais s’il quitte la page le sommaire déplié, alors un cookie posé sur sa machine permettra de déplier le sommaire s’il revient sur la page... Euh, suis-je clair ?

      2. Dans le fichier fonds/sommaire.html surchargé, il faut remplacer les deux [(#ENV*{fond_css})]_fond par sans_fond, voire même de réécrire totalement le sommaire !

    • Pour que le cadre de sommaire soit replié de base : Réponse donnée sur le fil !

    Répondre à ce message

  • 9
    Perline

    Pourquoi le sommaire seulement pour articles et rubriques ?
    De plus, les brèves utilisent une balise #TEXTE aussi, tout est totalement similaire, et puisque cela existe déjà pour articles et rubriques, on ne voit pas trop la raison de limiter pour les brèves. C’est vraiment dommage et non homogène !
    Contrairement à ce que tu écris, j’utilise parfaitement les onglets dans les brèves, ils ne sont pas réservés aux articles, heureusement !
    Alors on passe le pas et on ajoute les brèves < :-) ?

    • Perline

      J’insiste, mais pourquoi éliminer les brèves, alors qu’elles ont le même fonctionnement que les articles.
      Peux-tu nous dire, au moins, dans quel fichier, quelle fonction, il faut changer pour intégrer les brèves au même niveau que les articles ?
      Merci.

    • Les traitements de balises sont un peu compliqués sous SPIP. Je préfère effectuer la modif dans le plugin. Le sommaire automatique est donc maintenant disponible pour les brèves, les articles et les rubriques.

      Quant aux onglets, c’est vrai qu’ils sont disponibles pour toutes les balises #TEXTE.

    • Perline

      Super pour l’idée, mais en l’occurence ça ne marche pas (chez moi). Ni avec [sommaire] ni en activant la balise #CS_SOMMAIRE.
      En regardant le source je vois que les onglets sont identifiés par un h2, alors que le sommaire est construit sur du h3.
      Serait-ce pour cela ?
      Merci en tous cas !

    • As-tu bien recompile le CS en affichant sa page d’admin et vidé les caches ? Je ne comprends pas très bien ce que tu veux faire en fait... Construire un sommaire que les titres d’onglets, c’est ça ?

      Le sommaire ne repère que les intertitres SPIP : {{{Mon titre}}}

      Le test suivant me permet d’insérer un sommaire (construit d’après les titres h4) dans la brève ainsi qu’un système d’onglets (construit avec des h2) :

      {{{titre 1}}}
      
      {{{titre 2}}}
      
      {{{titre 3}}}
      
      <onglets>toto
      
      héhé
      ++++tata
      
      hihi</onglets>
    • Perline

      Ah, ben oui, ce que j’aurais aimé c’est le sommaire sur les onglets.
      Parce que les gens arrivent en bas du premier onglet et ne comprennent pas toujours qu’il y en a d’autres et qu’il faut remonter pour lire la suite.
      Alors j’imaginais que le sommaire pouvait servir à ça (aussi).

      Si ce n’est pas prévu, alors comment changer le h2 des onglets en h3 ou bien, mieux encore, ajouter un « faux » h3 (non visible, mais dans le code ou autrement) pour permettre un sommaire sur onglets ?
      Merci, parce que c’est vraiment le meilleur moyen de renvoyer les gens vers les onglets.

    • Tu as un exemple public à montrer ? Ce que tu demandes est complexe et ce n’est pas prévu effectivement. Cela demanderait une programmation jQuery pour associer au sommaire les titres des onglets.

      Le sommaire, justement, a été programmé pour ne pas tenir compte des titres d’onglets, ou des intertitres contenus dans les onglets. Ce que tu demandes doit donc faire l’objet d’une programmation spécifique.

    • Perline

      En fait, même avec le test demandé, le sommaire ne s’affiche pas, ni avec la balise, ni avec [sommaire]. En revanche, devant les intertitres s’affiche un triangle vers le haut, avec en survol écrit sommaire, qui clique mais n’aboutit à rien.
      Merci

    • Perline

      Autre possibilité pour régler la question des onglets : remettre l’affichage des onglets en fin de chaque bloc d’onglet, pour accéder à un autre onglet.
      En d’autres termes, que l’affichage des onglets soit en début de tous les blocs et en fin de tous les blocs.
      Est-ce possible ?

    • Perline

      Par exemple ici.
      En fait, n’importe quel système automatique qui permette de remettre la liste des onglets en bas du bloc serait bon.
      Cela dit, j’ai essayé avec ton exemple, une liste d’intertitres avant les onglets, [sommaire] dans le texte, balise sommaire et ça ne marchait pas non plus, ni avec l’un ni avec l’autre.
      Merci.

    Répondre à ce message

  • 1
    Perline

    Je ne peux pas faire « se marier » Sommaire avec Onglets (dans une brève). Comme les onglets sont déterminés par des h2 j’ai pensé qu’il suffisait de doubler en mettant le titre de l’onglet en intertitre (h3), mais en fait [sommaire] n’est pas interprété du tout : il apparaît tel que sur la page.
    Sur le même site, dans les articles, ça fonctionne parfaitement.
    Est-ce le texte de la brève qui n’est pas interprété ?
    Une autre idée ?
    Comment résoudre ?
    Merci.

    • Ah oui, le sommaire n’est disponible pour l’instant que dans les articles et les rubriques, tout comme les onglets d’ailleurs.

      Le plugin utilise le traitement de la balise #TEXTE plutôt qu’un pipeline. Son action est donc plus ciblée.

    Répondre à ce message

  • 2
    Gefonline

    Bonjour Patrice,

    Désolé de venir m’ajouter à la liste des doléances. Mon problème est tout bête, un clic sur une entrée du sommaire m’amène systématiquement à la page demandée (c’est le résultat attendu) mais toujours au bas de celle-ci, ce qui oblige à scroller pour lire la page par son commencement. C’est donc comme si l’ancre appelée par le lien se trouvait en bas de la page. Y a t-il une solution à ce problème ?

    Je précise que j’utilise la dernière version de spip sur firefox 3

    Merci

    Gérard

    • Gefonline

      Autant pour moi, c’est juste que je suis fatigué ce soir. L’ancre n’est pas en bas de page mais bien à la hauteur du titre ce qui décale la page quand celle-ci est plus longue que la hauteur d’écran. Par contre je n’arrive pas à modifier le style en changeant le fichier sommaire.css.html, mais peut-être que là aussi c’est qu’une question de fatigue...

    • Bon ben c’est tout bête. En ce qui me concerne, désactiver et réactiver le plugin depuis le couteau suisse permet de prendre en compte la css modifiée.
      Pour en revenir à ma question sur les ancres, c’est dommage que le plugin ancres douces n’est pas compatible avec celui-ci. Perso je n’aime ces pages qui se décalent à chaque clic, question de goût dira-t-on.

      En tout cas merci pour ce plugin et son integration au couteau suisse, c’est tellement pratique ces fonctionnalités que l’on active d’un clic !

    Répondre à ce message

  • la solution : le problème se situait entre le clavier et le siège : j’avais créé fichier sommaire dans le dossier squelettes/fonds ce qui a donc écrasé la mise en forme des fichiers se trouvant dans la dossier plugins/couteau-suisse/fonds et outils.

    Comme quoi, ça fait du bien de faire parfois une pause et de reprendre tout à zéro !

    Répondre à ce message

  • J’ai avancé un peu en affichant le code source. Il s’avère que les styles de l’ancien fichier sommaire (sommaire2.html) sont toujours appliqués. Comment faire pour que les nouveaux fichiers soient pris en compte et écrasent les données des anciens ?

    Répondre à ce message

  • Excellent plugin, que j’utilise depuis longtemps.

    Un problème est apparu avec la version actuelle et la gestion des styles. Les changements apportés à sommaire.css.html ne sont pas reportés, ou que de manière aléatoire, alors que sommaire.html et sommaire.css.html sont bien placés comme il faut.

    Quand je modifie par exemple le padding du champ titre, eh bien, rien ne se passe quand je souhaite voir le résultat sur le site. Je fais des « Recalculer cette page » et h5 à la pelle, et même en vidant le cache du site, ça ne marche pas. Et puis, tout d’un coup le changement est pris en compte, après d’innombrables actualisations de la page. C’est assez énervant.

    Quelqu’un a une idée... ?

    Répondre à ce message

  • 1

    Bonjour,

    J’essaie de voir comment avoir systématiquement mon sommaire sans l’image de fond et sans avoir à inclure dans mon texte d’article la balise [!fond].

    Comment faire ?

    Merci

    • Il suffit simplement de recopier le fichier « couteau_suisse/fonds/sommaire.html » dans ton squelette : « mon_squelettes/fonds/sommaire.html »
      " et de modifier le code en retirant le fond...

      Je pense qu’il suffit de remplacer simplement cs_sommaire_[(#ENV*{fond_css})]_fond par : cs_sommaire_sans_fond

    Répondre à ce message

  • cedric couvrat

    cette fonctionnalité existe-t-elle en dehors du plugin couteau suisse ? (autrement dit, est-il possible d’extraire une lame pour ne proposer que celle-ci aux administrateurs d’un site ?)

    merci

    Répondre à ce message

  • Bonjour,

    Je n’étais pas revenu sur ce forum depuis mon dernier message... Ravi de voir que l’adaptation est déjà faite, bravo ! :)

    Je viens de l’installer, ce que j’en ai vu me semble très bien, je vais intégrer ça correctement la semaine prochaine.

    Un grand merci pour ta réactivité.

    ZiWaM

    Répondre à ce message

  • 2

    Bonjour,

    j’utilise plugin vraiment très pratique.... Mais je viens de découvrir un petit soucis lorsque l’un des intertitres contient un acronyme. En effet, le texte de l’acronyme disparait complètement du titre. Si je fais un titre « Bienvenue sur SPIP » et que SPIP est un acronyme reconnu par mon site, le sommaire affiche « Bienvenue sur ». C’est très ennuyeux...

    J’utililse SPIP 1.9.2d et le couteau suisse 1.7.18.03.

    Merci de votre aide !

    • Petite précision. Je suis allée modifier le code php dans tmp/couteau-suisse/mes_fonctions.php. J’ai supprimé le traitement de la balise « acronym » dans les fonctions sommaire_d_article et sommaire_d_article_balise. Mais ce n’est pas très propre, car ça fait que les balises « acronym » sont laissée telles quelles et elles se retrouvent dans le sommaire. Idéalement, je m’attendrait à ce que les balises soient supprimées, mais pas leur contenu, un peu comme fait le filtre supprimer_tags

    • Ah oui, bien vu, merci du retour. Je viens de déposer la correction : http://zone.spip.org/trac/spip-zone.... Elle sera bientôt disponible sous forme de paquet zip.

      Le Couteau Suisse nécessite des mises à jour régulières. Ne pas hésiter donc à installer le plugin « Chargeur Activateur » que le Couteau Suisse utilise pour offrir un lien de téléchargement automatique sur sa page de config.

    Répondre à ce message

  • 1
    Marc VALLETEAU de MOULLIAC

    Bonjour, je confirme ici l’avis d’autres utilisateurs pour dire que ce plugin est vraiment formidable : merci à son(ses) auteur(s) !!

    Mais quel dommage que ce soit si compliqué à peaufiner dans un site, même après avoir récupéré la page sommaire1.html, surtout que le code n’est pas compatible avec IE6 et IE7 sous windows ...

    Par ex. la suppression des marges droite et gauche pour le cadre n’est pas prise en compte totalement dans IE7, et le triangle avec le lien pour revenir en haut de page est absolument invisible sous IE6 ou IE7 Win (vive Apple !!) ... et, comme, malgré pas mal d’heures passées à chercher, je n’ai pas trouvé son image dans le plugin (ni aucun fichier css d’ailleurs), je me sens idiot !! Comment faire pour que quelque chose apparaisse sous Win !!

    Quelqu’un saurait-il me dire comment faire pour que tout soit compatible avec Win ??

    Merci beaucoup ...

    Marc

    • Bonjour, je n’avais pas vu ce message, mais il est similaire à celui de ZiWaM. Je viens donc de supprimer ces fichiers (sommaire1.html et sommaire2.html) au profit d’un seul surchargeable : fonds/sommaire.html

      De plus, les styles ont été placés dans outils/sommaire.css.html, fichier également surchargeable.

    Répondre à ce message

  • 1

    Bonjour et félicitations pour cette fonctionnalité vraiment utile et utilisée.

    J’ai une remarque concernant l’utilisation des styles CSS. En effet que ça soit dans sommaire1 ou 2 les styles sont intralignes et ne permettent pas d’adapter le style du sommaire à ses besoins ou alors de manière incomplète. Il suffirait pourtant de créer des classes et ids, de créer une feuille de style externe avec la possibilité de la désactiver et on aura alors un sommaire auto « XHTML valid » avec une personnalisation infinie.

    C’est bête mais c’est ce seul point qui m’empêche aujourd’hui de l’utiliser. Pour le même effet je lui préfère le plugin « intertitres hiérarchisés » qui comporte un filtre table_des_matieres me permettant d’avoir mon propre squelette modèle avec la sémantique HTML et les styles CSS qui vont bien.

    Je ne pense pas être le seul à être confronter au problème, y’a t-il possibilité d’intégrer cette remarque dans une prochaine sortie ?

    Merci,

    ZiWaM

    • C’est une évidence. Je viens de modifier le plugin en conséquence. Merci de bien vouloir tester et me dire si ça convient.

    Répondre à ce message

  • Bonjour,
    Ce plugin sommaire marche trés bien avec le plugin typo_ecologique mais pas avec barre typo v2. Est ce normal ?

    Répondre à ce message

  • 4

    Bonjour,

    Je découvre depuis peu spip. Très bon soft... Pour la fonction sommaire après avoir installé la dernière ver du couteau suisse quand je coche sommaire dans le plugin, il s’affiche UNIQUEMENT sur ma page d’accueil (éditorial) mais uniquement aussi de façon aléatoire un jour oui un jour non.
    Je ne comprends...

    voici mon site pour l’instant j’ai désactivé

    http://www.lisangadeveloppement.com

    Quand il est actif c’est suite à (+++++) et non (++++) donc ????
    Pouvez-vous me dire ce qui coince car je préfère le sommaire à la navigation rapide du thème ALTERNATIF.

    • Le très bon squelette Alternatives a la particularité d’utiliser les balises #TEXTE* qui empêchent tout traitement possible et utilise le texte brut stocké en base de donnée. Cette façon d’empêcher les plugins d’agir bloque également de nombreuses lames du Couteau Suisse.

      Il faut donc remplacer toutes les occurence #TEXTE*|certainsfiltres|propre par : #TEXTE tout simplement.

      En particulier dans article.html, il faut supprimer tout le paragraphe [<div id="sommaire"> (jusque </div>]) et remplacer (#TEXTE*|decouper_en_page{#ID_ARTICLE}|propre|reduire_image{440,0}) par : (#TEXTE|reduire_image{440,0})

      J’ai envoyé un message à ce sujet aux auteurs de ce squelette, sans réponse à ce jour.

    • Santiago Rodriguez

      Merci pour votre réponse. Mais après bien du temps passé je ne vois toujours pas comment faire car dans article.html il n’y a pas :

      div id=« sommaire »> jusque /div

      et donc je ne peux pas intégrer ce code...

      (#TEXTE*|decouper_en_page#ID_ARTICLE|propre|reduire_image440,0) par : (#TEXTE|reduire_image440,0)

      il y a bien des div - « hierarchie » « contenu » « cartouche » « documents_portfolio » « navigation » « breves » ainsi de suite...

      voir mon site Lisangadeveloppement
      Donc merci par avance, car je souhaite avoir des pages sûres.

    • Je ne peux pas accéder aux squelettes de ton site. Attention aux différentes versions d’Alternatives...

      Il te suffirait dans un premier temps de rechercher dans tes fichiers .html les balises #TEXTE* (avec étoile) et ensuite de vérifier le contexte dans lequel elles sont employées...

    • OK et merci pour ta réponse.

      Je vais étudier ta remarque et analyser plus exactement ma version

      A+

    Répondre à ce message

  • 1

    Bonjour,
    Je viens d’installer le module « Sommaire d’un article ».
    J’aimerais qu’en cliquant sur un intertitre on revienne au sommaire, or je ne vois pas comment insérer la petite icône permettant d’y retourner, telle qu’elle est pourtant mentionnée dans l’article ci-dessus.

    Si quelqu’un peut m’aider, merci par avance
    JF

    • Je me réponds à moi-même...
      J’ai trouvé : il manquait la balise #INSERT_HEAD. Je l’ai réintroduite dans la section head de mon squelette, et tout est rentré dans l’ordre.
      JF

    Répondre à ce message

  • 1
    cedricici

    Bonjour, je ne sais pas si ce bug est connu mais les sommaires génèrent une erreur de validité XML, en effet, l’insertion d’une ancre avec id=« outil_sommaire » est redondante avec la div qui suit cette ancre (

    ).

    La solution est de supprimer l’ajout de cet ancre qui du coup de sert plus a rien.

    Sommaire_fonctions.php , ligne 91 :

    //$ancre = ’<a name=« outil_sommaire » id=« outil_sommaire »> </a>’ ;

    A+

    Répondre à ce message

  • 1

    Je viens de faire la mise à jour... pensant bien faire mais depuis les liens du sommaire vers les titres (ancres) ne marchent plus sous firefox... alors que cela semble tourner sous ie...
    j’y comprends rien... quelqu’un a une idée de ce qui sepasse ?
    exmeple http://www.bealiban.com/L-affectivite-et-la-vie.html?var_mode=calcul

    • Tout d’abord, ton squelette présente quelques anomalies, dont :
      -  une balise inconnue : <//_memrubric>
      -  un </div> qui semble en trop (après <INCLURE{fond=pied}>)

      Une mise à jour du plugin (v1.7.9.05 mini) permettra une meilleure compatibilité avec IE.

      Quand au sommaire, je ne le vois pas... Est-ce que la mise à jour règle le pb ?

    Répondre à ce message

  • 6

    Bonjour

    J’ai inséré le code suivant dans style.css (suppression de la marge à droite) :

    .cs_sommaire{
    	display:block;
    	float:left;
    	margin-left:1em;
    	margin-right:0em; /* surcharge */
    	overflow:auto;
    	z-index:100;
    	max-height:350px;
    	text-align:left;
    }

    mais cela n’a aucun effet
    une idée ?

    • La modification que tu as faite est probablement interprétée avant les styles par défaut du plugin, et donc annulée. Pour obliger le navigateur à supprimer la marge de droite du sommaire, il faut alors mettre :

      .cs_sommaire {margin-right:0pt !important;}

      A propos des css, je conseille toujours d’utiliser Firefox avec l’extension Firebug. C’est génial pour débusquer ce genre de petits problèmes.

    • J’ai remplacé « 0em » par « 0pt ».

      J’ai vérifié le source et il me semble bien que spip.css est bien chargé après la définition de cs_sommaire faite en dur dans l’entête.

      Voici un lien : http://autoconstruction.free.fr/spip.php?article258

      Peux-tu y jeter un coup d’oeil ?

    • Eh bien tu as mal vérifié. Ce n’est pas le cas.

      Tu me demandes de bosser sur ton site alors que tu ne fais pas ce que je te propose... Où va le monde !
      -  en 1 tu installes les logiciels suggérés plus haut
      -  en 2 tu vérifies !!
      -  en 3 tu modifies le css comme suggéré plus haut

    • Je viens de committer une petit changement dans le plugin pour que les petites images des intertitres n’aient plus de bordure. à 22h ce soir normalement, l’archive sera dispo.

    • En repassant sur ton site, j’ai vu que la découpe ne fonctionnait plus : http://autoconstruction.free.fr/?ar....
      Y a-t-il une incompatibilité avec un nouveau plugin que tu viens d’installer ? ou un nouveau squelette ?
      Merci du retour.
      Pat.

    • Bonjour Patrice

      Je n’ai pas installé de nouveaux plugins mais j’ai fait des modifs dans le squelette et les CSS. Il faut que je regarde cela de plus prêt. il y a aussi les plugins pour agrandir/diminuer la police de car. qui ne fonctionnent plus.

      Merci de t’intéresser à mes petits problèmes. A+

    Répondre à ce message

  • 6

    Bonjour,

    L’outil est merveilleux mais j’ai un souci de présentation pour le sommaire d’articles. Je voudrais présenter mon sommaire dans une colonne de tableau et mon texte (corps de l’article) dans une autre colonne.

    Or, etant donné que l’insertion se fait automatiquement, mon sommaire est placé au dessus du texte (alors que je veux qu’il soit à côté..). Y a t-il un moyen de désactiver l’insertion automatique et d’appeler le sommaire via une balise SPIP pour que je puisse le placer précisément à l’endroit de mon choix sur la page ?

    Merci de votre aide :)

    • Absolument, c’est un projet que je suis en train de développer. Repassez ici trèsbientôt, la balise sera implémentée. Une affaire d’un jour ou deux...

    • Merci pour votre réponse rapide :)

      Je vais donc arrêter de retourner le code dans tous les sens et attendre impatiemment la balise mais d’ores et déjà toutes mes félicitations pour votre travail.

    • Voila, le travail est bien avancé, tu peux mettre à jour le plugin.

      Ensuite, il te suffira d’activer la balise #CS_SOMMAIRE et tenter de la placer dans ton squelette. Comme conseil, il vaut mieux entourer cette balise d’un div spécifique du genre :

      [<div avec les classes ou les styles que tu veux>(#CS_SOMMAIRE)</div>]

      Je veux bien une url si tu as un exemple de l’utilisation de cette balise à donner !

    • Je tente d’utiliser la balise #CS_SOMMAIRE pour afficher le sommaire de l’article où je veux, mais je n’y arrive pas. Que je mette cette balise ou pas, le résultat est le même et le menu du sommaire s’affiche toujours en haut et pas moyen de le faire bouger où je veux avec le CSS.

      Est ce que j’ai raté quelquechose pour que cette balise soit activée ?

      Merci de votre réponse.

    • Je me réponds à moi-même parce que le souci est réglé. En fait j’ai un problème pour accéder aux options des outils du couteau suisse, et je ne pouvais pas régler l’option adéquate pour permettre l’activation de la balise #CS_SOMMAIRE.

      Mais j’ai contourné le problème de mon couteau suisse en allant régler cette option directement dans le fichier config_outils.php du répertoire plugins/couteau_suisse

    • Quel navigateur et quel O.S. utilises-tu ? Les options sont accessibles par Javascript... Il vaut mieux tenter de régler la bonne marche de la page de configuration du plugin, plutôt que de toucher le fichier config_outils.php : à la prochaine mise à jour du plugin, tes changements seront annulés !

    Répondre à ce message

  • 3

    Bonjour à tous.
    Merci Patrice pour ce travail.

    Cependant, j’ai activé le plugin et aucun sommaire ne s’affiche.

    Voir exemple : http://autoconstruction.free.fr/spip.php?article258&artpage=1

    J’utilise spip 1.9.2b

    • oups, mon pseudo et mon email pour la réponse

    • Bonjour, d’après ce que je peux voir dans ton code source, tu n’as pas dû activer l’outil ’Un sommaire pour vos articles’. De plus, le plugin vient d’être pas mal retravaillé, je te conseille donc une mise à jour rapide !

    • Merci Patrice pour la mise à jour.

      J’ai encore du mal à dompter les styles du sommaire (vivement la css séparée même si je me débrouille comme je peux ;)) mais en tout cas vraiment bravo pour le travail effectué.

      Karine.

    Répondre à ce message

  • 1

    Super ces doc sur les lames du couteau suisse ! C’est vraiment un super boulot ce plugin, les nuls en php dont je suis apprécient vraiment !

    Question : si je n’ai besoin que rarement d’un sommaire, est ce que je peux inverser la configuration, cad n’avoir un sommaire que si je met une balise SOMMAIRE ?

    • Absolument, mais après une mise à jour du plugin.

      Tu pourras donc désactiver la « Création systématique du sommaire » et placer la balise [sommaire] dans les articles qui nécessitent un sommaire.

    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 :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

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.

Qui êtes-vous ?
[Se connecter]

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