SPIP - Contrib

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



Accueil du site > Rédaction > Sommaires > Article sur plusieurs pages

Découper un article en plusieurs pages

dimanche 26 janvier 2003, par gpl. Dernier ajout mercredi 28 mars 2007


Un filtre pour découper l’affichage public d’un article en plusieurs pages.


Marche à suivre

1. Ajouter la fonction qui suit dans mes_fonctions.php3 :

2. Remplacer le [(#TEXTE)] présent dans article.html (ou dans votre propre squelette, bien sûr) par :

[(#TEXTE*|decouper_en_page|propre)]

Notez bien l’astérisque après #TEXTE ! Cette astérisque permet de désactiver les traitements par défaut de Spip sur le champ #TEXTE : c’est nécessaire ici parce que je veux traiter cinq traits d’union consécutifs qui sont transformés en <hr> normalement.

3. Rédigez vos articles en utilisant cinq traits d’union consécutifs à l’endroit qui doit recevoir la coupure.

À noter

Pour obtenir une ligne horizontale, la documentation de Spip stipule qu’une succession de quatre traits d’union ou plus est nécessaire. Avec ce filtre, c’est différent : quatre traits d’union provoque une ligne horizontale, cinq provoquent un saut de page. J’ai choisi ceci pour permettre d’avoir, dans l’hypothèse d’un autre squelette avec #TEXTE et non #TEXTE*, une ligne horizontale qui signale le découpage en pages.

Un exemple ?

Voyez http://alor.univ-montp3.fr/c.renais... pour un exemple sur un site existant.

Documents joints


Répondre à cet article

  • Découper un article en plusieurs pages

    17 avril 2008 15:12, par maude

    bonjour. g un petit souci, en faite je souhaite découper mon site en page ; c un long bandeau de 1000px(ou +) de largeur(chaque page est dc l’une a coté de l’autre) et chaque page est une rubrique. on peut naviguer par scrooling, mais je souhaiterai ajouter un menu rapide qui permettrai d’acceder directement a tel ou tel page en un clic. je pense que c la même chose que de découper un article en page, sauf que c’est sur la largeur, est ce que c’est possible en css ? help !

    Répondre à ce message

    Retour au début des forums

  • Découper un article en plusieurs pages

    3 mars 2006 09:21, par fulvio

    comment insérer des séparateurs entre les numéros de pages en bas de l’article ? Soit 1. 2. 3. .. soit 1 | 2 | 3 ... je ne sais pas ou placer ca dans le code

    Répondre à ce message

    Retour au début des forums

  • Découper un article en plusieurs pages

    10 mai 2007 10:25, par Willy

    Bonjour, Comment modifier la fonction pour que la découpe des pages se fasse de façon automatique par rapport à un nombre de caractère par exemple. Je me doute que c’est "$page = split(’-----’, $texte) ;" qu’il faut remplacer cependant je ne vois pas comment.

    Je sais bien qu’une telle découpe automatique n’est pas conseillé mais je souhaite juste savoir comment est il possible de le faire. Merci de vos réponses.

    Répondre à ce message

    • Découper un article en plusieurs pages 10 mai 2007 12:09, par Willy

      J’ai enfin trouvé la réponse sur un forum php : l’utilisation de wordwrap(). Wordwrap() permet nottament d’insérer un séparateur tous les n caractères en revenant au mot précédent pour ne pas le couper.

      j’ai pu ainsi intégrer automatiquement des ’-----’ à partir de x caractères et laisser ainsi le "split" fonctionner normalement.

      Donc : en fait, pour un découpage automatique : je remplace : $page = split(’-----’, $texte) ; par $texte2 = wordwrap($texte, 2000, ’-----’, 1) ; $page = split(’-----’, $texte2) ; voila ^^

      Répondre à ce message

      • Découper un article en plusieurs pages 17 juillet 2007 11:29, par cedricici

        Bonjour sur le même principe, j’ai modifié le filtre pour qu’il découpe l’article en ’n’ paragraphes entiers, la somme des caractères de ces paragraphes par pages étant inférieurs à la limite ajouté en argument du filtre (=2000 par defaut)

        // $page = split(’-----’, $texte) ;

        devient : avec $limite =2000 par defaut

        // on coupe tous les paragraphes et on regroupe ceux < $limite caractères

        $paragraphe = split(’’\n\n’’, $texte) ;

        $page[] = ’’’’ ;

        foreach($paragraphe as $par)

         if((strlen($page[sizeof($page)-1])+strlen($par)) <= $limite)

           $page[sizeof($page)-1] = $page[sizeof($page)-1].’’\n\n’’.$par ;

           else

            $page[]=’’\n\n’’.$par ;

          

        // $page = split(’-----’, $texte)

        Répondre à ce message

    Retour au début des forums

  • Testé avec 1.9.2

    22 mars 2007 09:04, par Dom

    Je viens de l’installer sur une 1.9.2, ça marche parfaitement du premier coup.

    Par contre cela semble assez difficile à personnaliser. N’y a-t-il pas d’autres moyens ou plugins ? Cette fonction n’est pourtant pas si exotique pour un logiciel de publication d’articles.

    Merci en tous cas, ça fonctionne très bien.

    Répondre à ce message

    Retour au début des forums

  • Problème avec Firefox

    3 mai 2007 17:18, par Jérémy Zucchi

    Bonjour, et tout d’abord bravo pour ce filtre très pratique ! J’utilise le squelette EGT et sous Firefox il y a un problème au niveau du menu dépliable depuis que j’ai ajouté le fitre pour découper les articles (voir exemple). Par contre le découpage marche même sous Firefox, c’est juste le menu qui bugue. Si quelqu’un a une idée...

    Répondre à ce message

    Retour au début des forums

  • Découper un article en plusieurs pages

    21 décembre 2006 10:43, par dephazz

    bonjour

    le script fonctionne tres bien , mais je voudrais simplement deplacer le menu de navigation en dessous de l’article pour qu’il garde la meme place ,,ce qui n’est pas le cas actuellement ,car l’article est decouper avec un nombre different de carateres a chaque page.

    merci...........

    Répondre à ce message

    Retour au début des forums

  • > Découper un article en plusieurs pages

    27 janvier 2003 14:35, par Treanna

    Dites-moi... Ce filtre ne pourrait-il pas fonctionner dans un tableau sur une même page ? Si oui, on tiendrait enfin LA solution pour publier des textes sur plusieurs colonnes.  :-o

    Répondre à ce message

    • Après quelques modifications du code, il est maintenant possible d’avoir le texte sous forme de tableau ET sur plusieurs pages.

      La variable $nb_colonne indique le nombre de colonne à afficher par page.

      exemple :
      - $nb_colonne = 2
      - un texte qui tenait auparavant sur 5 pages

      - résultat : la première page affiche les pages 1 et 2 sur deux colonnes. La page deux affiche les pages 3 et 4 et la dernière page, la 5.


      function decouper_en_page($texte) {
      global $artsuite, $var_recherche, $nb_colonnes;

      if (empty($artsuite)) $artsuite = 0;

      $nb_colonne = 2; // Nombre de Colonne pour l'affichage

      $page = split('-----', $texte);

      $num_pages = count($page);

      // Si une seule page ou numéro illégal, alors retourner tout le texte.
      // Cas spécial : si var_recherche positionné, tout renvoyer pour permettre à la surbrillance
      // de fonctionner correctement.
      if ($num_pages == 1 || !empty($var_recherche) || $artsuite < 0 || $artsuite > $num_pages) {
      return $texte;
      }

      if ($num_pages <= $nb_colonne || !empty($var_recherche) || $artsuite < 0 || $artsuite > $num_pages) {
      $resultat = "

      ";
      for ($i = 1; $i < $nb_colonne; $i++) {

      $resultat .= "

      ";

      $resultat .= "

      ";
      }

      $resultat .= "

      ".$page[0]." ".$page[$i]."
      ";
      return $resultat;
      }

      $p_prec = $artsuite - $nb_colonne;
      $p_suiv = $artsuite + $nb_colonne;
      $uri_art = generer_url_article($GLOBALS['id_article']);
      $uri_art .= strpos($uri_art, '?') ? '&' : '?';

      switch (TRUE) {
      case ($artsuite == 0):
      $precedent = "";
      $suivant = ">>";
      break;
      case ($artsuite == ($num_pages-1)):
      $precedent = "<<";
      $suivant = "";
      break;
      default:
      $precedent = "<<";
      $suivant = ">>";
      break;
      }

      $j=0;
      for ($i = 0; $i < $num_pages;
      $i=$i+$nb_colonne) {
      if ($i == $artsuite) {
      $milieu .= " " . ++$j . " ";
      } else {
      $milieu .= " " . ++$j . " ";
      }
      }

      // Ici, on peut personnaliser la présentation
      $resultat = "

      ";

      $resultat .= "

      ";
      for ($i = $artsuite + 1; $i < $artsuite + $nb_colonne; $i++) {

      $resultat .= "

      ";

      $resultat .= "

      ";
      }

      $resultat .= "

      ".$page[$artsuite]." ".$page[$i]."
      ";

      $resultat .= "

      ";
      return $resultat;
      }
      // FIN du Filtre decouper_en_page

      J’espère que cela vous conviendra. ;-)

      Et bien sur, un grand merci au script de GPL.

      Nicolas

      Répondre à ce message

      • bonjour, le script fonctionne chez moi, la page est bien découpée, mais apparait l’erreur suivante sur chaque debut de page :

        Missing argument 2 for decouper_en_page() in /var/www/spip3/mes_fonctions.php3 on line 37

        Répondre à ce message

      • > Découper un article en plusieurs pages 8 avril 2004 10:02, par sugardaddy

        je n’obtiens pas les 2 colonnes... juste une lettre bizarre au moment de la separation et plus de texte apres, la 2e colonne est zappée. mais keskispass ? merci de votre aide.

        Répondre à ce message

      • > Découper un article en plusieurs pages 1er novembre 2004 19:21, par buzz

        Salut !

        J’ai installé la version découper l’article en plusieures pages sans soucis mais quand je tente de mettre en oeuvre la découpe dans un tableau je n’obtiens rien après les 5 - ...

        Y’a t’il quelque chose à mettre en oeuvre afin de faire apparaître la seconde partie du texte ?

        En effet j’aimerais que mes articles soient coupés pour rentrer dans une mise en page (squelette) un peu spécifique avec le début de l’article à gauche de la page et le reste sur la partie droite de la page ...

        Voir en ligne : Voir le site

        Répondre à ce message

      • Après bien des tests, je constate que cette contrib remarquable pose un pb avec une boucle document ...

        • Prenons la page article.html de la dist 1.8.2.g
        • Ajoutons *|decouper_en_page|propre à la balise #TEXTE
        • Ajoutons le filtre qui va bien dans mes_fonctions.php3

        Ecrivons un article avec un document joint inséré dans l’article type <docXX|center>( inséré dans le formulaire pas simplement joint...). Je ne saisis même pas les 5 tirets, je fais au plus simple, un article basique avec un doc joint dans le formulaire...

        Alors, la boucle documents-joints avec {mode=document]{doublons} est en échecet renvoie quand meme en double le document inséré dans le texte :(

        C’est possible d’y remédier ? ps : j’ai le même pb avec la 1.9

        Répondre à ce message

    Retour au début des forums

  • Découper un article en plusieurs pages

    3 août 2006 17:39, par zeratul

    Bonjour

    Magnifique, le filtre. Je suis sous spip 1.9 et ça marche a merveille. Mais j’aimerais savoir si je peux inclure le numéro de la page dans le titre. Dans le fichier article.html qui contient et je voudrais faire ...#TITRE(page XX)... Merci

    Répondre à ce message

    Retour au début des forums

  • Découper un article en plusieurs pages

    12 janvier 2006 15:44, par edo

    Juste merci pour la contrib. C’est très pratique.

    Répondre à ce message

    Retour au début des forums

  • menu de navigation ailleurs

    12 décembre 2005 18:07, par fulvio

    D’abord merci pour cette merveilleuse contribution. Je voudrais placer le menu de navigation (pages 1,2 >>) ailleurs que sous le texte de l’article, comment faire ?

    Répondre à ce message

    Retour au début des forums

  • Problème de raffraîchissement

    27 octobre 2005 20:28, par Ben

    Salut,

    Certains d’entre vous ont peut-être connu ce problème, avec le filtre "decouper_en_page" : lorsque je clique sur "Page suivante" (ou "Page précédente"), l’affichage de l’article ne se met pas à jour. Je suis obligé de "recalculer" la page à chaque fois pour accéder aux parties successives de l’articles.

    Auriez-vous une idée pour régler ce problème ?

    Merci d’avance !

    Répondre à ce message

    Retour au début des forums

  • > Découper un article en plusieurs pages

    4 juin 2005 10:30, par davduf

    Bonjour à tous,

    Ce filtre est l’un des plus puissants que j’utilise. Avant tout, merci à ses auteurs.

    Seulement voilà, depuis que j’utilise les "urls propres" (1.8.1), il ne fonctionne plus...

    aie, aie, aie... je crains, en effet, qu’ils ne soient pas compatibles. J’ai retiré les "urls propres" et, là, tout a fonctionné. Les articles étaient à nouveau découpés...

    Quelqu’un a t il une idée pour avoir des urls propres tout en faisant fonctionner le script "découpés en page" ?

    Merci encore

    Voir en ligne : http://www.davduf.net/

    Répondre à ce message

    Retour au début des forums

  • > Découper un article en plusieurs pages

    1er décembre 2004 12:36, par Nounette

    Bonjour,

    Tout me paraissait si simple que tout finit par se compliquer...

    J’ai créé et placé à la racine du site le fichier mes_fonctions.php3 en ne faisant qu’un simple copier/coller du code proposé.

    Ensuite, dans article.html, j’ai remplacé (#TEXTE) par[(#TEXTE*|decouper_en_page|propre)]

    Erreur : filtre "decouper_en_page" non défini.

    Une solution pour me permettre d’utiliser ce superbe script ? Merci par avance

    Répondre à ce message

    Retour au début des forums

  • > Afficher certains éléments à la dernière page

    24 septembre 2004 20:11, par Avalon

    Bonjour,

    Première chose, merci beaucoup pour ce filtre :-) C’est vraiment bien de pouvoir découper les articles pour un meilleur confort de lecture.

    Avec les différentes interventions, j’ai pu déjà le modifier comme je le souhaitais, je bute cependant sur un truc. J’ai découpé mon article en plusieurs pages, à chaque page j’ai pu faire en sorte que le chapo, le titre, etc... n’apparaissent pas. Dans le même esprit j’aimerais que les champs Extras que j’ai rajouté ne s’affiche que sur la dernière page et pas sur toutes les pages... Vous avez une solution pour ça ?

    Merci d’avance :-)

    Répondre à ce message

    Retour au début des forums

  • Bonjour,

    sur mon poste local (Windows XP) ca fonctionne très bien. Par contre, sur mon serveur Linux, le découpage fonctionne mais, la mise en cache ne se fait pas (une seule page est cachée). Donc lorsque je clique pour aller sur la page suivante, il faut que je recalcule la page, ensuite pour aller encore à la suivante, il faut aussi recalculer la page (et ainsi de suite)....

    J’utilise spip agora.

    Des idées ?

    Répondre à ce message

    • > Découper un article en plusieurs pages 26 août 2004 14:47, par jules

      Je suis débutant sur spip et je cherche à faire la chose suivante :

      Imaginons une rubrique qui contient 200 articles. J’aimerais afficher mes articles par pages de 10 ou 20, en les classant au choix par date, par auteur ou theme...

      Est-ce possible ? Merci !

      Répondre à ce message

    Retour au début des forums

  • > Découper un article en plusieurs pages

    21 janvier 2004 18:49, par Michaël

    Je teste actuellement SPIP avec la version 1.7

    J’ai ajouté le fichier mes_fonctions.php3 contenant le code de la fonction. Dans une page de test j’ai appelé un article avec une boucle de type :

    <BOUCLE_texte_article(ARTICLES){id_article=4}>
         [(#TEXTE*|decouper_en_page|propre)]
           </BOUCLE_texte_article>

    Le résultat est le suivant :
    - en haut de la page apparait le code de la fonction (ce n’est pas très joli...)
    - à l’endroit où le texte devrait apparaître il y a le message : Erreur : filtre « decouper_en_page » non défini

    Quelqu’un peut-il m’aider ??

    Michaël

    Répondre à ce message

    Retour au début des forums

0 | 25 | 50 | 75



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