SPIP - Contrib

SPIP - Contrib

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

208 visiteurs en ce moment

fontsizeup fontsizedown
Accueil du site > Contribs > Administration > Le Couteau Suisse > Découper un texte en pages et/ou en onglets
[107 commentaires]

Découper un texte en pages et/ou en onglets

vendredi 4 mai 2007, par Franck Ducas, Patrice Vanneufville

  • Digg
  • Del.icio.us
  • Facebook
  • Google
  • Technorati
0 vote

Un raccourcis typographique qui découpe le texte de vos rubriques ou de vos articles en plusieurs pages, ou crée pour vous des onglets... Rubis sur ongle !

Introduction

Les articles de votre site sont parfois un peu longs et vous vous êtes probablement déjà posé la question de savoir comment alléger vos belles tirades...

Voici notre solution : dans vos textes, il vous suffit d’utiliser quatre signes plus consécutifs (« ++++ ») à l’endroit où doit se trouver la coupure. Ce raccourci n’est pas sans rappeler les quatre signes moins consécutifs (« ---- ») qui indiquent à SPIP l’emplacement d’une ligne horizontale.

L’outil va ensuite ajouter automatiquement une petite zone de navigation en haut et en bas de votre texte, qui peut ressembler à ceci :

Si un extrait du texte est :

              met jamais en quatre !

              ++++

              Le chant à un : c'est le chant du palais

Alors, en passant la souris sur le chiffre « 2 », vous obtiendrez :

En passant la souris sur les liens de navigation, vous apercevez ci-dessus qu’un titre apparaît : il s’agit en fait du début de la première phrase de la page ciblée. Il pourrait également s’agir du premier titre... A vous de composer !

Lorsque votre article comporte plus de quatre pages, alors la navigation prend une forme plus complexe :

Un petit conseil : à l’intérieur de votre texte, il vaut mieux isoler ce raccourci en sautant une ligne de part et d’autre, SPIP saura alors mieux formatter vos paragraphes. Vérifiez également qu’aucune balise HTML ou raccourci SPIP ne traverse les quatre plus (« ++++ ») : vous risquez d’endommager l’aspect de votre site, car chaque page ainsi découpée est considérée comme indépendante. Evitez par exemple :

              {{Voici une fin de page en gras

              ++++

              Voici un début de page en gras}}

La bonne syntaxe est :

              {{Voici une fin de page en gras}}

              ++++

              {{Voici un début de page en gras}}

Installation

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

Pour avoir accès à la découpe de vos textes en plusieurs pages, il vous faut donc avoir installé ce plugin en suivant la procédure normale d’installation des plugins SPIP.

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

Petite astuce : afin d’éviter que le raccourci « ++++ » se retrouve automatiquement dans les résumés produits par la balise #INTRODUCTION, activez aussi l’outil « Balise #INTRODUCTION ».

Notes techniques

- Techniquement parlant, cet outil agit sur toutes les balises #TEXTE trouvées dans vos squelettes et insère une coupure là où il trouve quatre signes plus (« ++++ »). Vous pouvez donc insérer des découpages dans vos articles, vos textes de rubrique, etc.

- Une condition est cependant nécessaire : la découpe en page ne fonctionnera pas si votre squelette 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 à mettre une étoile, alors il faut ajouter à votre balise le filtre cs_decoupe, comme ceci : [(#TEXTE*|propre|cs_decoupe)]

- Le développement décrit dans le présent article est inspiré d’un ancien filtre que vous pouvez encore trouver ici : Découper un article en plusieurs pages. Afin d’assurer la compatibilité avec le séparateur "-----", ajoutez le code suivant à votre fichier config/mes_options.php :

// Compatibilite ascendante avec l'ancien filtre 'decoupe'
@define('_decoupe_COMPATIBILITE', '-----');

Balise #CS_DECOUPE

Par défaut, le Couteau Suisse insère la pagination en tête et en pied d’article automatiquement. Mais vous avez la possibilté de placer cette pagination ailleurs dans votre squelette qu’en tête de votre article grâce à une balise #CS_DECOUPE. L’utilisation de cette balise doit être activée dans la page de configuration et annule ainsi l’insertion automatique des paginations dans votre article.

Surcharges des images

Si vous désirez changer les images utilisées pour la navigation (par défaut, ce sont de petits triangles noirs), il est préférable de recopier le dossier plugins/couteau_suisse/img/decoupe/ directement dans votre squelette. En effet, SPIP va d’abord chercher le dossier en question dans votre squelette avant d’aller explorer les répertoires du plugin : c’est le mécanisme des surcharges. Du coup, vous pouvez créer un dossier monsquelette/img/decoupe/ afin de remplacer celui du Couteau Suisse et y mettre vos propres images. Ainsi, la mise à jour de votre plugin helvétique préféré pourra se faire sans crainte de perdre votre personnalisation.

Les images doivent obligatoirement se nommer ainsi : debut.gif, debut_off.gif, precedent.gif, precedent_off.gif, suivant.gif, suivant_off.gif, fin.gif, fin_off.gif. Si debut.gif ou fin.gif n’est pas trouvé, alors les images precedent.gif ou suivant.gif seront doublées (cf l’exemple ci-dessus).

Attention : toute modification d’un fichier ou d’un dossier surchargé nécessite une recompilation des outils du Couteau suisse, obtenue en se rendant simplement sur la page de configuration du plugin ou en réaffichant celle-ci.

Astuces

- En manipulant les styles css, Il vous est possible de désactiver une des deux lignes de navigation (ou les deux si vous le souhaitez, mais le bon sens n’y vois aucun intérêt !). Dans le header de votre squelette ou dans un fichier css, il vous suffit d’insérer « div.decoupe_haut{display:none !important;} » pour supprimer la navigation placée en haut du texte, et « div.decoupe_bas{display:none !important;} » pour supprimer celle d’en bas.

- Dans les fichiers de votre squelette, vous avez peut-être une balise #TEXTE destinée à l’impression du texte complet, non découpé en pages. Le Couteau Suisse met à votre disposition un filtre "cs_imprimer" qui produira le texte dans son ensemble, où les pages sont simplement séparées par un mince filet pointillé. La syntaxe pourrait être celle-ci : [(#TEXTE*|cs_imprimer|propre)].

- Dans votre navigateur, ajouter à l’adresse d’une page le paramêtre "cs=print" permet d’obtenir le même effet décrit ci-dessus et force le Couteau Suisse à afficher l’article entier. Par exemple : www.monsite.ici/spip?article999&cs=print

- Le découpage d’un article peut permettre très facilement de se composer rapidement un diaporama que vous pouvez éventuellement commenter (astuce de Ch.Guigueno). Il suffit de placer une photo par page et le tour est joué ! Voici un exemple (emb1 et emb2 doivent être des images) :

{{{Mon titre 1}}}
Voici ma photo 1 : <emb1|center>
<center>{Remarquez ces couleurs !}</center>
++++
{{{Mon titre 2}}}
Voici ma photo 2 : <emb2|center>
<center>{Remarquez ces textures !}</center>
++++
etc. !

- Cet outil « Découpe un texte en pages » se marie très bien avec l’utilisation d’un outil voisin, le Sommaire Automatique : « Un sommaire pour vos articles ». 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.

Les onglets

Vous pouvez trouver de très nombreux exemples d’utilisation des onglets dans les articles : par ici ou par ici...

Depuis la version 1.7.8.07 du plugin, l’outil « Découpe un texte en pages » offre (pour peu de code supplémentaire !) la possibilité de construire des onglets dans vos articles (ou même dans vos squelettes). La syntaxe est basée sur le même séparateur (« ++++ ») que l’on place très simplement à l’intérieur des balises <onglets> et </onglets>. Par exemple :

              <onglets>
              Titre 1

              Mon 1er Texte après deux sauts de ligne
              ++++
              Titre 2

              Mon 2ème Texte après deux sauts de ligne
              </onglets>

Voici en image ce que donne un usage par défaut :

Dont voici le code :

              <onglets>Introduction
 
              blah blah
              ++++Développement
               
              blah blah blah
              ++++Conclusion
               
              blah blah blah blah
              </onglets>

Cette foncionnalité utilise les librairies JQuery, simplifiant grandement la tâche des programmeurs et utilisées par SPIP lui-même.

Afin d’afficher correctement les onglets demandés par le rédacteur, le plugin fournit le code HTML suivant :

            <div class="onglets_bloc_initial">
                 <div class="onglets_contenu">
                      <h2 class="cs_onglet"><a href="#">Introduction</a></h2>
                      blah blah
                 </div>
                 <div class="onglets_contenu">
                      <h2 class="cs_onglet"><a href="#">Développement</a></h2>
                      blah blah blah
                 </div>
                 <div class="onglets_contenu">
                      <h2 class="cs_onglet"><a href="#">Conclusion</a></h2>
                      blah blah blah blah
                 </div>
            </div>

jQuery va ensuite construire à la volée le sytème d’onglets et mettre en rapport les onglets cliquables et les contenus. Les ancres sont introduites dans certaines balises <div> sous forme : id="mon_ancre".

Cela donne donc au final le code HTML suivant :

            <div class="onglets_bloc" id="ongl_0">
                <div class="onglets_liste">
                    <h2 class="onglets_titre" id="onglets_titre_0">
                       <a href="#">Introduction</a>
                    </h2>
                    <h2 class="onglets_titre selected" id="onglets_titre_1">
                       <a href="#">Développement</a>
                    </h2>
                    <h2 class="onglets_titre" id="onglets_titre_2">
                       <a href="#">Conclusion</a>
                    </h2>
                </div>
                <div class="onglets_contenu" id="onglets_contenu_0">
                    blah blah
                </div>
                <div class="onglets_contenu selected" id="onglets_contenu_1">
                    blah blah blah
                </div>
                <div class="onglets_contenu" id="onglets_contenu_2">
                    blah blah blah blah
                </div>
            </div>

Aspect visuel

Dans le code ci-dessus, il est facile de repérer les différents blocs <div> ou <h2>, affublés de classes qui vous permettrons de changer l’aspect des onglets à votre guise, comme ceci par exemple, les onglets créés par Douglas Bowman :

dont j’ai reconstitué pour vous le fichier CSS adapté au Couteau Suisse qui devra être interprété APRES les styles définis par défaut :
Cascading Style Sheet - 1.4 ko

Voici d’autres onglets créés par Douglas Bowman :

Je mentionne également une contribution similaire de Pierre T, ayant adapté pour SPIP les scripts d’Erik Arvidsson, programmés en Javascript pur. Mais aujourd’hui, autant utiliser directement les librairies jQuery de SPIP et alléger le temps de chargement des pages. Les versions 1.7.9.12 et suivantes du Couteau Suisse comprennent la syntaxe de ce plugin, assurant ainsi une compatibilité pour d’anciens articles basés sur ces travaux.

Ancres et paramètres

Chaque bloc d’onglets est affublé d’une ancre : #ongl_0, #ongl_1, etc. Ajoutée à l’url de votre page, l’ancre placera automatiquement le navigateur en tête de bloc.

Pour activer un onglet particulier sur une page, il vous suffit d’ajouter un paramètre dans votre url. Par exemple : "onglet=2". Notez que le premier onglet est noté zéro ; l’exemple précédent activera donc le troisième onglet de la page entière.

Les onglets dans vos squelettes

Depuis la version 1.7.9.12 du plugin, de nouvelles balises (#ONGLETS_DEBUT, #ONGLETS_TITRE et #ONGLETS_FIN) ont été introduites afin de vous permettre de contruire des onglets directement dans votre squelette (fichiers *.html). Voici un exemple de syntaxe :

Dépendances

- La librairie jQuery est requise pour le fonctionnement des Onglets, dans la construction et la manipulation des jeux d’onglets présents sur la page finale. Ces fonctions Javascript très utile a été intégré au core dès la version 1.9.2 de SPIP. Pour les versions inférieures, il vous faut installer et activer le plugin Jquery que vous pouvez télécharger ici : http://zone.spip.org/files/spip-zon....

- Les styles CSS et les fonctions Javascript du plugin sont insérés grâce à la balise #INSERT_HEAD qui doit absolument ê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 les liens n’ont pas l’apparence voulue, alors activer l’outil "Balise #INSERT_HEAD" permet au Couteau Suisse d’insérer automatiquement cette balise sans manipulation de votre part.

Retour en haut de la page

107 Messages de forum

Voir toute la discussion

Pages 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |...

  • Répondre à ce message

    7 novembre 14:47 , par sergeben

    J’ai installé la version 1.9.1 de Spip. J’ai installé également le Couteau Suisse uniquement pour le découpage des des articles trop longs. Pour ça, il a donc fallu que j’installe également JQuery, et c’est OK. Maintenant, le pb est qu’au 1er "++++" qui correspond à la 1ere découpe de l’article, l’article est effectivement coupé, il n’y a pas de navigation numérotée, et il n’y a pas les autres découpes de l’article. J’ai activé pourtant l’Insert Head, et là je suis un peu perdu... Quelqu’un pourrait-il m’aider ???

  • Répondre à ce message

    12 octobre 20:09 , par Patrice Vanneufville

    Voila, je viens de l’intégrer dans la dernière version du Couteau Suisse. Les retours de test sont les bienvenus...

    A propos de l’ancre, ca devient délicat car la pagination peut être absente.

  • Répondre à ce message

    12 octobre 15:09 , par Patrice Vanneufville

    Ca pourrait oui, comme le fait déjà le sommaire...

  • Répondre à ce message

    12 octobre 14:56 , par christophe

    cet outil est intéressant, une balise pour personnaliser la navigation ou la placer ailleurs qu’à l’endroit prévu initialement est-il vraiment envisagé ? J’ai regardé les fichiers de configuration, mais c’est un chouïa trop compliqué à faire pour moi.

  • Répondre à ce message

    6 octobre 19:44 , par Patrice Vanneufville

    Surtout pas, l’appel de outils/decoupe.js est automatiquement ajouté au header, à condition de bien avoir la balise #INSERT_HEAD en dur ou ajoutée par le couteau suisse...

  • Répondre à ce message

    6 octobre 16:16

    Bonjour, l’outil onglet, chez moi, ne fonctionne pas sous IE j’obtiens l’erreur "onglets_init est indéfini" et les onglets apparaissent dépliés dans le texte.

    En faisant des essais je me suis rendu compte que si je copie le fichier decoupe.js et que je le met dans le répertoire de mon squelette et que je l’appel dans mes pages via la balise #CHEMIN je n’ai plus le message d’erreur et si je fais la même chose avec la feuille de style ça marche.

    Est-ce que qq1 aurait une idée, moi je sèche ?

    Arnaud

  • Répondre à ce message

    1er août 00:00 , par Loiseau2nuit

    Hello Patrice :)

    Comme d’hab encore une fonctionalité du tonnerre pour un plugin qui ne l’est pas moins (du tonnerre, faut suivre :P )

    seulement voila, titilleux comme je suis, il a encore fallu que je pousse le bébé jusque dans ses retranchements et... et... le résultat est que Loiseau2nuit : 1 - Le plugin : 0

    J’ai gagné... le droit de venir t’enquiquiner un peu avec la problématique suivante :

    Tout marche nickel sauf que... mes #TITRE de mots clés ne saffichent pas dans les onglets :O !!!

    C’est grave docteur ???

    Merci d’avance pour tes retours ;)

    et désolé pour le code pas indenté mais vu la taille restreinte du champ de commentaire, c’est couru d’avance...

  • Répondre à ce message

    18 juillet 12:03

    D’abord, un grand merci aux auteurs de ce plugin !

    Dans IE6, je trouve qu’on ne voit pas les images .gif, comme : precedent.gif, precedant_off.gif, suivant.gif et suivant_off.gif.

    Savez-vous comment on fait pour régler ce problème ?

  • Répondre à ce message

    29 avril 14:44 , par eric

    re,

    version spip 1.9.3 merci

  • Répondre à ce message

    29 avril 14:24 , par eric

    bonjour,

    merci pour votre travail.

    Cependant...j’ai un leger pb, j’utilise la version de spip, et quand j’insere des onglets, dans l’affichage privée cela fonctionne normalement, mais dans l’affichage public les onglets se positionnent en vertical au dessus des boites.

    j’ai essayé plusieurs trucs mais aucun effets sur le pbs. Alors si quelqu’un a qui cela est deja rrivé peut m’aiguiller, cela me rendrait beaucoup service.

    Actuellement je fais tourner en local.

    merci de votre coopération et de votre travail.

Pages 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |...

Répondre à cet article

Retour en haut de la page

Ça discute par ici

SPIP | Squelette | | Plan du site | Suivre la vie du site RSS 2.0