SPIP - Contrib

[ar] [en] [es] [fr] [it]



Accueil du site > Rédaction > Archives Rédaction > Filtres Mise en page pour avant Spip 1.9

Sommaire de l’article

mercredi 12 mars 2003, par Noplay. Dernier ajout vendredi 21 octobre 2005


Cette modification permet d’afficher le sommaire de son article généré dynamiquement à partir du texte de l’article.


Ce filtre permet d’afficher le sommaire de son article généré dynamiquement à partir du texte de l’article. Vous pouvez naviguer dans l’article en cliquant sur les titres du sommaire.

Démo

Tous ce qui se trouve entre {{{ et }}} est considéré comme un titre à ajouter au sommaire de l’article.

Installation

dans mes_fonctions.php3 ajoutez :

et dans votre squelette vous ajoutez :
- [(#TEXTE*|sommaire_article|propre)] pour afficher le sommaire de l’article
- [(#TEXTE*|sommaire_ancre|propre)] pour afficher l’article.

P.-S.

Attention : ce filtre utilise la fonction preg_match_all qui necessite une version de PHP3 superieure a PHP 3.0.9

Documents joints


Répondre à cet article

  • Sommaire de l’article

    12 juin 2006 13:19, par B.POIRAUD

    Excusez-moi d’arriver longtemps après la fin d ela bagarre !

    Vous écrivez ceci : et dans votre squelette vous ajoutez :

    * [(#TEXTE*|sommaire_article|propre)] pour afficher le sommaire de l’article * [(#TEXTE*|sommaire_ancre|propre)] pour afficher l’article.

    mais moi je ne sais pas : dans quel fichier du squelette il faut mettre ça ? Peut-on le mettre n’importe où ? Est-ce que ça remplace quelque chose existant ?

    Merci d’avance !

    b_poiraud

    Répondre à ce message

    • Sommaire de l’article 12 juin 2006 22:39, par B.POIRAUD

      >>>>>>>>>>>>>>>>>>>>>>>>>>>>

      B.Poiraud répond ........... Youpi !!

      Merci, j’ai trouvé après de multiples manipulations. Voici, pour d’autres,novices comme moi, ce que ça donne :

      Dans article.html j'avais ceci :
      [<div class="chapo">#DEBUT_SURLIGNE(#CHAPO)#FIN_SURLIGNE</div>]
      [<div class="texte">#DEBUT_SURLIGNE(#TEXTE|couleur)#FIN_SURLIGNE</div>]
      [<div class="ps">#DEBUT_SURLIGNE(#PS)#FIN_SURLIGNE</div>]
      [<div class="notes">#DEBUT_SURLIGNE(#NOTES)#FIN_SURLIGNE</div>]

      J'ai remplacé la deuxième ligne par ceci :
      [<div class="texte">(#TEXTE*|sommaire_article|propre)</div>]
      [<div class="texte">(#TEXTE*|sommaire_ancre|propre)</div>]

      Cela me fait donc ceci :
      [<div class="chapo">#DEBUT_SURLIGNE(#CHAPO)#FIN_SURLIGNE</div>]
      [<div class="texte">(#TEXTE*|sommaire_article|propre)</div>]
      [<div class="texte">(#TEXTE*|sommaire_ancre|propre)</div>]
      [<div class="ps">#DEBUT_SURLIGNE(#PS)#FIN_SURLIGNE</div>]
      [<div class="notes">#DEBUT_SURLIGNE(#NOTES)#FIN_SURLIGNE</div>]

      et, compte-tenu de ce que j’ai mis dans mes_fonctions .... CA MARCHE ! Et c’est bien commode ce sommaire automatique : !

      Mais, encore deux questions

      1) j’aurais voulu que les lignes du sommaire soient bleues. J’ai essayé plein de choses, ça ne va pas.

      2) j’avais fixé une couleur violette à h3 . Et, depuis que j’ai mis le sommaire automatique ... ya plus de violet.

      Une idée ? deux zidées ?

      Merci à Jacques J et à tous

      Répondre à ce message

    Retour au début des forums

  • > Appel conditionnel du sommaire

    1er janvier 2005 16:54, par fulvio

    Super contrib ! Merci noplay. Toutefois il implique que tous les articles qui ont du texte entre les 3 accolades {{{ ajoute automatiquement le menu. J’avais donc besoin d’afficher le sommaire que sur certains articles.

    J’ai donc créé une boucle qui me permette d’afficher le sommaire uniquement lorsque le mot clé "ancres-texte" est attaché à l’article :

    <BOUCLE_ancres(MOTS){id_article}{titre = ancres-texte}>
    [(#TEXTE*|sommaire_article|propre)]
    <hr>
    <br><br>
    </BOUCLE_ancres>

    [(#TEXTE*|sommaire_ancre|propre)]
    ...

    Malheureusement, et ne sais pas pourquoi, ca ne marche pas ! :-( J’ai tout essayé mais impossible de faire apparaitre/disparaitre le menu avec l’utilisation de mots clés.

    Je propose donc une solution plus ou moins sympas. La solution et bien en effet c’est sebold qui l’a donnée ci-dessous et que je remercie infiniment, avec la possibilité d’utiliser ses propres tags et ne pas lier le sommaire aux 3 accolades.

    Cela m’a permis de créer des tags personnalisés. Tant qu’ils ne sont pas utilisés le menu n’apparait pas ! J’ai donc créé des tags personnalisés <anc></anc>.

    J’ai utilisé ma boucle "Mots" avec le mot clé "ancres-texte" pour afficher la décoration du sommaire.

    Résultat dans le squelette de l’article :

    <!-- affichage du sommaire si tag "anc" utilisé -->
    [(#TEXTE*|sommaire_article{"<anc>","</anc>"}|propre)]

    <!-- boucle affichant la décoration et espace pour le sommaire -->
    <BOUCLE_ancres(MOTS){id_article}{titre = ancres-texte}>
    <hr>
    <br><br>
    </BOUCLE_ancres>

    <!-- texte de l'article -->
    [(#TEXTE*|liens_ouvrants{"<anc>","</anc>"}|sommaire_ancre|propre)]

    Ainsi, le tag anc active le sommaire et le mot clé "ancres-texte" rattaché à l’article me permet de "décorer" l’article. Si l’article n’utilise pas les tag "anc" et n’a pas le mot clé attaché, il se présentera comme un article normal.

    J’ai également profité de la contribution de ovto pour faire des liens de retour au sommaire sur les titres en adaptant le script pour mes_fonctions en conséquence :

    /*
    *   +----------------------------------+
    *    Nom du Filtre : Sommaire de l'article                                              
    *   +----------------------------------+
    *    Date : dimanche 9 février 2003
    *    Auteur :  Noplay (noplay@altern.org)                                      
    *   +-------------------------------------+
    *    Fonctions de ce filtre :
    *      Cette modification permet d'afficher le sommaire de son article
    *      généré dynamiquement à partir du texte de l'article. Vous pouvez naviguer
    *      dans l'article en cliquant sur les titres du sommaire.
    *
    *      Tous ce qui ce trouve entre {{{ et }}} est considéré comme un titre à ajouter au sommaire de l'article.
    *   +-------------------------------------+
    *  
    * Pour toute suggestion, remarque, proposition d'ajout
    * reportez-vous au forum de l'article :
    * http://www.uzine.net/spip_contrib/article.php3?id_article=76
    */
    function sommaire_article($texte, $beginPattern="\{\{\{", $endPattern="\}\}\}"){
    $pattern = "|" . $beginPattern . "(.*)" . $endPattern . "|U";
           preg_match_all($pattern, $texte, $regs);
           $texte="";
           $nb=1;
           for($j=0;$j<count($regs[1]);$j++){
              $texte=$texte."<BR>&nbsp;&nbsp;&nbsp;<li><a name=\"so_".$nb."\" a href=\"#sommaire_".$nb."\">".$regs[1][$j]."</a></li>";
                   $nb++;
      }
           return $texte;
    }

    function sommaire_ancre($texte, $beginPattern="\{\{\{", $endPattern="\}\}\}"){
    $pattern = "|" . $beginPattern . "(.*)" . $endPattern . "|U";
           $texte = preg_replace($pattern, "<a href=\"#so_#NB_TITRE_DE_MON_ARTICLE_renvoi#\" name=\"sommaire_#NB_TITRE_DE_MON_ARTICLE#\">$0</a>", $texte);
         
           $array = explode("#NB_TITRE_DE_MON_ARTICLE#" , $texte);
           $res =count($array);
           $i =1;
           $texte=$array[0];
           while($i<$res){
                   $texte=$texte.$i.$array[$i];
                   $i++;
           }
           $array = explode("#NB_TITRE_DE_MON_ARTICLE_renvoi#" , $texte);
           $res =count($array);
           $i =1;
           $texte=$array[0];
           while($i<$res)
           {
                   $texte=$texte.$i.$array[$i];
                   $i++;
           }
           
           return $texte;
    }

    //Fin filtre sommaire de l'article
    ?>

    Répondre à ce message

    • > Appel conditionnel du sommaire 22 janvier 2005 12:49, par paps

      Je sais pas pourquoi ta fonction ne marche pas chez moi mais j’ai mis ca à la place et tout fonctionne, le sommaire et les liens pour retourner au sommaire.

      /*
      *   +----------------------------------+
      *    Nom du Filtre : Sommaire de l'article                                              
      *   +----------------------------------+
      *    Date : dimanche 9 février 2003
      *    Auteur :  Noplay (noplay@altern.org)                                      
      *   +-------------------------------------+
      *    Fonctions de ce filtre :
      *      Cette modification permet d'afficher le sommaire de son article
      *      généré dynamiquement à partir du texte de l'article. Vous pouvez naviguer
      *      dans l'article en cliquant sur les titres du sommaire.
      *
      *      Tous ce qui ce trouve entre {{{ et }}} est considéré comme un titre à ajouter au sommaire de l'article.
      *   +-------------------------------------+
      *  
      * Pour toute suggestion, remarque, proposition d'ajout
      * reportez-vous au forum de l'article :
      * http://www.uzine.net/spip_contrib/article.php3?id_article=76
      */
      function sommaire_article($texte)
      {
             
              preg_match_all("|\{\{\{(.*)\}\}\}|U", $texte, $regs);
             
              $texte="";
             
              $nb=1;
             
              for($j=0;$j<count($regs[1]);$j++)
              {
                 $texte=$texte."<a name=\"so_".$nb."\" href=\"#sommaire_".$nb."\">".$regs[1][$j]."</a><br>";
                      $nb++;
         }
              return $texte;
      }

      function sommaire_ancre($texte)
      {
              $texte = preg_replace("|\{\{\{(.*)\}\}\}|U","<a name=\"sommaire_#NB_TITRE_DE_MON_ARTICLE#\" href=\"#so_#NB_TITRE_DE_MON_ARTICLE_renvoi#\">$0</a>", $texte);
             
              $array = explode("#NB_TITRE_DE_MON_ARTICLE#" , $texte);
              $res =count($array);
              $i =1;
              $texte=$array[0];
              while($i<$res)
              {
                      $texte=$texte.$i.$array[$i];
                      $i++;
              }

              $array = explode("#NB_TITRE_DE_MON_ARTICLE_renvoi#" , $texte);
              $res =count($array);
              $i =1;
              $texte=$array[0];
              while($i<$res)
              {
                      $texte=$texte.$i.$array[$i];
                      $i++;
              }
             
              return $texte;
      }
      //Fin filtre sommaire de l'article

      Voir en ligne : Page fonctionnant avec ce sommaire

      Répondre à ce message

      • > Appel conditionnel du sommaire 22 janvier 2005 13:33, par paps

        Pour compléter et faire réellement fonctionner le mot clé conditionnel ancres-texte tout en se débarassant de ces affreuses balises <anc></anc> voici la comment est rédigé mon corps d’article :

        <B_ancres>
                <!-- affichage du sommaire si tag "anc" utilisé -->
                [(#TEXTE*|sommaire_article|propre)]

                <!-- boucle affichant la décoration et espace pour le sommaire -->
                <BOUCLE_ancres(MOTS){id_article}{titre = ancres-texte}>
                <hr>
                <br><br>
                </BOUCLE_ancres>

                <!-- texte de l'article -->
                [(#TEXTE*|liens_ouvrants|sommaire_ancre|propre|justifier)]
        </B_ancres>
                [(#TEXTE|liens_ouvrants|justifier)]
        <//B_ancres>

        - un article avec le mot clé : http://legoux.org/article139.html
        - un article sans : http://legoux.org/article139.html

        no problemo

        Patrice.

        Répondre à ce message

    • > Appel conditionnel du sommaire 18 juillet 2005 16:17, par Pierre MULLER

      Avec une boucle ARTICLES au lieu de MOTS, cela marche.

      Répondre à ce message

    Retour au début des forums

  • > Sommaire de l’article

    24 juin 2005 01:36, par fulvio

    Ca semblera tout bête mais le lien qui se crèe est http://www.monsite.com/#sommaire_1 mais il manque devant l’article ! (ca devrait être http://www.monsite.com/article.php3...)

    Ainsi ca me mène au sommaire....

    Une idée où j’ai fait faux ? Sinon faudrait que devant p>

    merci pour votre aide

    Répondre à ce message

    Retour au début des forums

  • > Sommaire de l’article

    21 mars 2003 11:12

    Comment je fais pour imprimer un article sur le site contrib.
    ou est l’icon imprimer ?

    Répondre à ce message

    Retour au début des forums

  • > Sommaire de l’article et HTML Valide

    21 avril 2005 09:33, par Bruno Mathieu

    Bonjour, j’ai remplacé

    $texte = preg_replace("|\{\{\{(.*)\}\}\}|U","<a name=\"sommaire_#NB_TITRE_DE_MON_ARTICLE#\">$0</a>", $texte);

    par

    $texte = preg_replace("|\{\{\{(.*)\}\}\}|U","{{{<a name=\"sommaire_#NB_TITRE_DE_MON_ARTICLE#\">$1</a>}}}", $texte);

    sinon, le validateur html du w3c pour un doctype HTML 4.01 Transitional me répond que la page est invalide car si j’ai bien compris, on ne peut pas mettre un H3 dans un A.

    Autrement, c’est vraiment bien utile comme filtre. Merci.

    PS : j’utilise la version de SPIP 1.7.2.

    Répondre à ce message

    Retour au début des forums

  • j’ai un peu modifié les filtres et on revient au sommaire en cliquant les titres :

    function sommaire_article($texte)
    {
           
            preg_match_all("|\{\{\{(.*)\}\}\}|U", $texte, $regs);
           
            $texte="";
           
            $nb=1;
           
            for($j=0;$j<count($regs[1]);$j++)
            {
               $texte=$texte."<a name=\"so_".$nb."\" href=\"#sommaire_".$nb."\">".$regs[1][$j]."</a><br>";
                    $nb++;
       }
            return $texte;
    }

    function sommaire_ancre($texte)
    {
            $texte = preg_replace("|\{\{\{(.*)\}\}\}|U","<a href=\"#so_#NB_TITRE_DE_MON_ARTICLE_renvoi#\" name=\"sommaire_#NB_TITRE_DE_MON_ARTICLE#\">$0</a>", $texte);
           
            $array = explode("#NB_TITRE_DE_MON_ARTICLE#" , $texte);
            $res =count($array);
            $i =1;
            $texte=$array[0];
            while($i<$res)
            {
                    $texte=$texte.$i.$array[$i];
                    $i++;
            }

            $array = explode("#NB_TITRE_DE_MON_ARTICLE_renvoi#" , $texte);
            $res =count($array);
            $i =1;
            $texte=$array[0];
            while($i<$res)
            {
                    $texte=$texte.$i.$array[$i];
                    $i++;
            }
           
            return $texte;
    }

    Répondre à ce message

    Retour au début des forums

  • Le filtre sommaire ne fonctionne pas en ligne (alors que ça marche en local avec easy php). Bizarre...

    Mon hébergeur est Ouvaton, et d’après ce que j’ai vu ils ont une version de php suffisante.

    Voir en ligne : la page où le sommaire auto ne marche pas en ligne

    Répondre à ce message

    Retour au début des forums

  • > Sommaire de l’article

    6 mai 2004 10:54, par ben

    Bonjour,

    J’ai cherché un peu sur le site de SPIP ainsi que sur le net mais je n’ai pas trouvé réponse à ma question :

    J’ai voulu utiliser ce filtre mais il ne marchait pas. Au bout d’un moment je me suis demandé à quel texte s’appliquait ce filtre et j’ai essayé la chose suivante : remplacer l’expression régulière "|\{\{\{(.*)\}\}\}|U" par "|<h3 class=\"spip\">(.*)</h3>|U". Et ça marche !!

    Il semble donc que mon filtre soit appliqué après la transofrmation en html du texte de l’article. Ca m’embête un peu car ça crée un dépendance sur le fait qu’on utilise une balise h3 pour les titres.

    Ma question est la suivante : Est-ce un nouveau comportement de SPIP ou y a-t-il un endroit où on peut spécifier à quel moment le filtre s’applique ?

    Merci,

    ben

    Répondre à ce message

    Retour au début des forums

  • dans l’interface d’admin les accolades sont bien interprétées selon le cas par du gras, des intertitres..., mais une fois affichées sur mon site je vois les accolades ? que se passe-t-il d’après vous ?

    je dois ajouter un filtre pour prendre en compte l’interprétation des accolades ?

    merci

    Répondre à ce message

    Retour au début des forums

  • rajouter un "haut de page" aux titres

    19 juin 2003 10:02, par ahmed

    script très utile mais quand la page est un peu longue, on souhaiterait avoir un symbole haut de page à coté du titre pour remonter au sommaire. ne connaissant pas PHP, une aide serait la bienvenue merci d’avance

    Répondre à ce message

    Retour au début des forums

  • J’ai proposé un article où J’ai couplé les scripts "sommaire" et "découper un article en plusieurs pages".

    Il est en attente de validation

    Répondre à ce message

    Retour au début des forums

0 | 25



Suivre la vie du site RSS 2.0 | Plan du site | Espace privé | Charte et vie SPIP-Contrib | SPIP | L'autre.net