En onglets dans le texte de SPIP, ou ailleurs...

Une mise en page en blocs superposés, très pratique pour des fiches techniques par exemple, toutes versions SPIP !

Ce script utilise JavaScript mais se comporte bien en cas de désactivation. De plus il place un cookie de sorte qu’au retour sur la page, il s’ouvre sur l’onglet que vous avez quitté ;-)

Vous pouvez mettre ce que vous voulez dans le contenu, texte, image, vidéo...

.

Utilisation

A la rédaction du texte de votre article procédez comme suit :

<onglet|debut|titre=xxx>
contenu du premier onglet

<onglet|titre=xxx>
contenu du deuxième onglet

<onglet|titre=xxx>
contenu du troisième onglet

etc...

<onglet|fin>

Utilisation dans le squelette

Je vous livre à titre d’exemple ce script qui m’a été demandé par un utilisateur. Il affichera les différentes traductions de votre article, l’onglet s’ouvrira dans la langue courante, SPIP c bô...

<B_traductions>
<div class="tab-pane" id="xx">
           <BOUCLE_malang(ARTICLES){traduction}{lang}>
   <div class="tab-page">
            <h2 class="tab">#LANG</h2>
#TEXTE
   </div>   </BOUCLE_malang>
           <BOUCLE_traductions(ARTICLES){traduction}{exclus}{par lang}>
   <div class="tab-page">
            <h2 class="tab">#LANG</h2>
#TEXTE
   </div>
   </BOUCLE_traductions>

</div> 
         </B_traductions> 

Un autre tableau dans le texte ? Précisez juste une id dans le premier onglets :

<onglet|debut|id=xx|titre=xxx>

Pointer directement vers un onglet

En mettant un id à un onglet (<div id="toto" class="tab-page"> par exemple), il suffit d’ajouter l’ancre de même nom à l’URL pour que l’onglet soit automatiquement sélectionné (example.com/article42.html#toto par exemple).

Personnalisation

Par défaut les onglets ont une taille fixe de 70 pixels. Vous pouvez changer celà dans la feuille de style, il vous faudra ajuster aussi les images.

Vous pouvez aussi décider de tailles variant avec la longueur de titre de l’onglet, pour cela utilisez la feuille de style fournie ici, enregistrez la dans votre dossier squelettes/css

css onglets taille variable

Have fun ;-)

Cet article est une adaptation du script d’Erik Arvidsson que vous pouvez voir en ligne ici

F.A.Q :

J’ai bien tout fait mais rien ne se passe ! ;-(

Vérifiez que la balise #INSERT_HEAD est bien présente dans vos squelettes. Elle est indispensable au fonctionnement des plugins. A partir de la version 1.9 de SPIP, cette balise est en standard dans le fichier inc-head.html appelé dans le header de tous les squelettes.

Reproduisez ce principe sur votre site, placez vos css et vos javascripts dans ce fichier vous gagnerez du temps...

Voir aussi

-  la lame du couteau suisse : Découper un texte en pages et/ou en onglets

Discussion

43 discussions

  • Bonjour

    Débutant sur spip 2.0.10, j’utilise sarka spip 3.0.2.
    Je découvre les onglets qui me permettrai d’avoir des articles moins long.

    voir un article d’essai sur mon site avec onglet ici

    ma question : pour avoir des onglets et des fonds de pages sur le même thème que mon site, ou je vais trouver le fichier css et ou je doit le mettre ensuite ?

    Merci de votre aide et de toutes les améliorations que vous nous apportez.
    Cordialement
    Eric

    Répondre à ce message

  • Problème résolu :

    pb de clic sur les onglets sous IE 7 (et pas sous Mozilla FF)

    Solution simple :
    enlever la ligne :
    « cursor : default ;  »

    du css.tab
    En espérant en avoir aidé d’autres.

    Répondre à ce message

  • bonjour,

    j’ai installé le plugin sous spip 2.0
    Il est idéal pour le site que je créé mais je ne parviens pas à trouver comment modifier l’apparence de mes onglets...aucune de mes modifications CSS n’est prise en compte, que ce soit pour les onglets comme pour leur contenu !!(taille de la vignette, couleur....)

    Merci de votre réponse !!

    Répondre à ce message

  • Salut

    merci pour ce plugin bien sympa
    j’ai un (tout petit) souci concernant l’ordre des onglets. Je crois connaître l’origine du problème mais je ne connais pas assez bien javascript pour y remédier :

    j’utilise en fait le plugin pour générer des onglets à la fois dans le squelette et dans le texte (via des modèles).

    Tout fonctionne à merveille. Au niveau du code source de la page, mes titres et mes contenus sont dans le bon ordre, mais ce sont simplement les onglets qui ne sont pas dans le même ordre que le contenu : les onglets créés dans le texte via les modèles sont positionnés avant les onglets générés directement dans le squelette.

    J’imagine que c’est simplement que dans le code du js c’est le champ texte qui passe d’abord à la moulinette, puis le squelette ?

    C’est gênant car lorsqu’on arrive sur la page, c’est un onglet secondaire qui s’affiche et l’onglet principal se retrouve après tous les autres...

    Quelqu’un saurait comment corriger le js pour que le squelette passe avant le champ texte ?

    merci du coup de main

    Répondre à ce message

  • 1
    Tropicaloo

    Bonjour,

    Quelqu’un sait-il comment résoudre via les CSS le bug d’IE6 qui n’affiche pas les images (documents) inclus dans un article lorsqu’ils sont alignés à gauche ou alignés à droite (float left et float right) ?

    J’ai beau mettre des z-index à 10, 100, ... etc sur les classes .spip_documents .spip_documents_right et .spip_documents_left
    rien y fait, IE6 ne veut rien entendre et la suppression de la couleur sur .dynamic-tab-pane-control .tab-page dans tab.css (astuce donnée dans un commentaire si dessous) n’est possible que sur un site au fond de couleur identique au tab.page.
    Merci.

    • Tropicaloo

      [Résolu]

      Pour ceux qui rencontreraient le même problème avec IE6, j’ai trouvé la solution en rajoutant la propriété position : relative ; aux classes du css de spip :
      .spip_documents_right et .spip_documents_left

    Répondre à ce message

  • 1

    Bonjour,

    J’utilise avec succès ce plugins. Il est vraiment impressionnant.

    Juste une idée de variation : la possibilité d’avoir les onglets en vertical (un peu comme un répertoire papier...) ?

    Je ne sais pas si cela est possible, voire même esthétique...

    Merci en tout cas et bravo

    • Ca serait une très bonne idée que de faire des onglets a la verticale avec un choix possible entre les deux et le top du top la possibilité de les alterner en cascade par exemple pour pouvoir créer des hierarchie en onglets. Il serait fort éagréable dans le meme sens de pouvoir attribuer des styles différents a des onglets imbriqués les uns dans les autres.

      Genre 1er niveau blanc, niveau infirieur dans la hierarchie d’une autre couleur etc... J’ai essayé de le faire mais j’ai l’impression que le plugin est trop dépendant des class et id qui sot attribuées aux div, on ne peut donc pas faire des class différentes ou difficilement.

    Répondre à ce message

  • Bonjour pierre,

    Merci pour ton plugin, j’ai ajouté un peu de javascript pour avoir en plus le code généré dans le 3em onglet, difficile à expliquer mais visible ici http://elastick.net/Astuces-SPIP

    si ça peut servir, help yourself

    ++

    *alm remember chatillon virtutus

    Répondre à ce message

  • Un grand merci tout d’abord pour ce plug très pratique !

    N’étant pas très expérimenté, je voudrais savoir comment changer la couleur de fond des onglets (bleue par défaut) pour la rendre transparente par exemple ou mieux (soyons fou !) attribuer une couleur par onglet.

    Merci encore

    Répondre à ce message

  • 4

    J’utilise ce plugin avec grand bonheur... Jusqu’à ce que j’ai changé un peu mon squelette... et là cata avec IE (sur firefox pas de soucis)

    La partie du squelette contenant l’article a désormais une auteur fixée (en px), et un scroll... or avec internet exploreur les onglets restent fixe sur l’image, le reste de l’article défilant derrière.

    De plus mon menu (plugin menu déroulant) devient transparent, et donc se confond avec le texte contenu dans les onglets)

    Que faire pour contenir les caprices d’IE ???

    Voici mon CSS pour la partie contenant les articles.

    #conteneur
    width : 100% ;
    background : #FFF ;
    border-top:2px solid #FF6600 ;

    #conteneur #contenu
    background : #FFF ;

    float : right ;
    height : 30em ;

    overflow : auto ;
    width : 47.20em ;
    margin-left:4px ;
    padding-left : 1px ;
    padding-right : 1px ;

    Pour le CSS de l’onglet pas de modif avec l’origine

    Merci d’avance pour votre coup de pousse

    • et en mettant un height à l’onglet dans la css ?

    • Je viens d’essayer... mais ça ne change pas le bug sous IE.
      Le tableau déterminé par l’onglet semble ne pas être inclus dans le « div contenu ».
      Le contenu de l’article est « scrollé » par la barre de défilement déterminée dans le « div contenu » alors que le tableau des ongets est scrollé par la barre de défilement de la page entière....

      J’essaye de regarder dans le code source de la page ce qui peut clocher... mais je ne vois pas...

      est-ce que ce ne serait pas le « .dynamic-tab-pane-control »... dont je ne connais pas rôle ?

      Merci pour l’idée quand même.

    • Voilà en gros le code source de la partie concernée..

      div id=« conteneur »>

      div id=« contenu »>

      ...

      div class=« tab-pane » id=« »>

      div class=« tab-page »>

      h2 class=« tab »>titre premier onglet/h2>

      contenu premier onglet

      /div>

      /div>

      ...

      désolé pour le format, j’ai enlevé les < de début de balise, je ne sais plus comment on cite du code.

    • Je m’auto-réponds (vraiment désolé de polluer le forum... mais on peut éventuellement supprimer mes messages intermédiaires.)


      Une solution qui fonctionne :

      J’ai ré-étalonné le z-index dans le fichier tab.css

      Si j’ai bien compris ce critère gère la superposition des différents éléments. Il devait y avoir un conflit au niveau de la valeur par défaut du z-index des éléments du squelette dans habillage.css.

      En augmentant tous les z-index d’une unité dans tab.css le problème s’est réglé.

    Répondre à ce message

  • 1

    Dans un squelette, j’avais besoin d’afficher un liste d’article avec un onglet par article, pour que la ligne ne soit pas trop longue, j’ai modifié le plugin pour permettre un genre de pagination (en fait faire apparaitre en premier onglet « <" et en dernier "> » qui permettent d’avancer ou de reculer dans la liste)

    Je mettrais bien volontier ces modifs à disposition mais je ne sais pas comment.

    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