Accueil du site > Le Geek Lab > Présenter son article en colonnes sous Spip

Mise en page et présentation typographique

Présenter son article en colonnes sous Spip

vendredi 27 février 2009, par Loiseau2nuit

Comment, sous Spip (v. 1.9.x à 2.0.x) donner à ses rédacteurs la possibilité de présenter son article en colonnes de texte ?

Cette question je me la suis posée à l’occasion d’un projet, début 2008. Un peu de recherche, quelques échanges sur la liste Spip-user et une vieille contrib exhumée sur Spip-contrib plus tard, et je postais maladroitement une méthode légèrement revue, indigne de porter le nom de "tutoriel", tant la solution proposée était sale, buguée et surtout anti-conforme XHTML.

Aujourd’hui, c’est finalement le Couteau-Suisse qui m’apporte la solution !

Pour répondre à ce besoin, en 2004, Buzz postait la solution suivante sur Spip-contrib, qui consistait en un filtre php |afficher_en_colonnes associé d’une mise en forme du #TEXTE de l’article en tableaux sur deux colonnes.

Mais voila, moi, les tableaux html pour conditionner une mise en page, c’est comme le choux fleur, j’aime pas ça ! De plus cette solution étant valable pour de (très) ancienne version de Spip, il convenait de remettre un peu cela au goût du jour et l’idée a donc été de trouver le moyen de le faire en CSS, en XHTML conforme et c’est l’outil "Décoration" du Couteau Suisse, qui m’a finalement apporté l’illumination !

Le principe

Cet outil "Décoration" permet de définir très rapidement de nouveaux raccourcis typographiques de type <raccourcis> à utiliser dans le corps de vos articles Spip. Sur l’interface du plugin, il suffit, une fois l’outil activé, de définir les styles CSS qui vont s’appliquer aux raccourcis ainsi créés.

Il devait donc en toute logique être possible de créer des raccourcis (plutôt que mes mot-clés de 2008 :-P) pour conditionner l’affichage en deux colonnes. Voyons ensemble comment.

Mise en place

Je ne reviendrai pas sur la méthode pour installer le plugin et pour en activer un a un les différents outils, pour cela je vous renvois à la documentation du Couteau Suisse, à la documentation de l’outil Décoration, qui eux même doivent bien renvoyer à la documentation officielle de Spip sur les plugins.

Pour moi, donc, vous aurez déjà avant de commencer cette lecture, installé le Couteau Suisse et activé l’outil "Décoration".

Définition des balises

Sur l’interface de "Décoration", une zone de texte est prévue pour comporter vos définitions de balises. La syntaxe est relativement rigoureuse :

type_de_conteneur.votre_raccouurcis_texte.type_de_sélecteur_css_associé = nom_du_selecteur_css

Pour notre affaire, afin de répondre parfaitement aux normes de l’intégration graphique tant XHTML que CSS, il conviendra donc de créer trois nouvelles <div> en leur associant chacune une class CSS dont le style sera défini, soit à même l’interface de "Décoration", soit, et c’est la méthode privilégiée ici [1], dans vos feuilles de styles.

Une fois ceci fait, le rédacteur dispose dans ses articles Spip des 3 nouveaux raccourcis suivants :

qu’il faudra bien sûr imbriquer pour que cela fonctionne correctement et que le bloc "2col" prenne la place qu’il lui faut dans votre mise en page :

A ce stade de la rédaction de votre article, prenez soin de faire en sorte que votre colonne de droite ne soit jamais plus longue que votre colonne de gauche afin que la mise en page soit cohérente. (et oui, désolé, le ratio de longueur ne se calcule pas de manière automatique, et en même temps, heureusement, car j’aime bien avoir le contrôle sur la machine ;-) )

Note : Les utilisateurs de la Barre typographique V2 (BTV2) auront même accès à un bouton pour ces raccourcis typographique, ainsi que pour toutes les autres décos du Couteau Suisse :-)

Définitions des CSS

Une fois les raccourcis créés, nous allons donc définir leur style dans notre feuille de style. Rien de bien compliqué, je vous donne mes propres CSS pour l’exemple, à adapter selon votre mise en page à vous :

A copier coller dans votre feuille spip_style.css ou tout autre feuille de style choisie pour conditionner les styles typographiques disponibles à la rédaction de vos articles.

Bien évidement, vous pouvez de cette manière créer autant de blocs multi colonnes que vous le souhaitez. On peut très bien imaginer une mise en page sur trois ou plus... colonnes. Après, attention tout de même que ca ne vire pas au grand n’importe quoi dans le rendu final à l’écran :-)

Exemple

voici une petite démonstration en direct live de la méthode décrite ici :


Dans le texte de votre article

Rendu à l’écran

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum ac felis. Morbi vulputate nibh quis magna. Pellentesque in libero non eros elementum fringilla. In et sapien at augue tincidunt lobortis. Mauris diam. Nam eu ligula. Suspendisse potenti. Ut sollicitudin sem.
Fusce dapibus, diam vitae varius imperdiet, quam turpis vehicula felis, at malesuada nulla lorem vel lectus. Phasellus aliquet, nunc in luctus consectetur, sapien tortor porttitor elit, sed hendrerit nisi urna et purus. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur sit amet tellus.

Ce bloc une fois traduit en XHTML par l’outil, aura la forme suivante :

dont vous pourrez constater au validateur XHTML du W3C que cela répond parfaitement aux standards de conformité du HTML et XHTML strict et/ou transitionnel.

Un autre exemple sur ce site, sur un article "full 2 colonnes" et avec du vrai texte dedans : Mon Curriculum Vitae.

EDIT : Internet Explorer

Je me disais bien que j’avais oublié de traiter un cas, à savoir celui de notre vieux frère ennemi Internet Explorer.

Suite à un mail reçu ce jour, l’on me dit que ma technique marche sous IE et pas sous Firefox (curieux, d’habitude c’est plutôt l’inverse).

Logiquement, ce code CSS est universel et ne m’a jusqu’ici posé aucun soucis de ce que dans le jargon on appelle la "Cross-browser compatibility".

Cela dit, si ça arrive, il se peut que ca ait 2 origines :

  • problème de conflit entre les caches de SPIP et de Firefox (qui des fois ne savent se mettre d’accord quand à la version mémorisée de la page qu’il faut vous servir quand vous la demandez) => un vidage des 2 caches devrait régler le problème.
  • Un problème de CSS, pas tant sur vos déclarations concernant les colonnes que sur celles du conteneur parent si vous avez joué avec des paddings. Et là je vous suggère de Googler sur ce qu’on appelle "l’interprétation du modèle de boîte d’un navigateur à l’autre" afin de voir ce qui pourrait clocher. ;-)

Voila :-)

Notes

[1] pour que ça soit plus clean et plus facile à gérer, j’explique pourquoi au cours d’une discussion avec Patrice dans le forum de l’outil Décoration sur Spip-contrib

Vos commentaires

  • Le 30 janvier 2008 à 02:22, par Sylvain

  • Le 27 février 2009 à 13:50, par Loiseau2nuit

  • Le 18 avril 2009 à 23:34, par pam

  • Le 19 avril 2009 à 14:57, par Loiseau2nuit

  • Le 19 avril 2009 à 16:27, par pam

    merci

    dans sarka, il n’y a pas sur la balise TEXTE de filtre paragrapher mais par contre un typo_couleur..

    je les contacte pour voir...

    pam

  • Le 22 octobre 2009 à 13:24, par reno

    simple efficace, merci !

  • Le 17 octobre 2010 à 13:17, par Steph

    Ca fonctionne parfaitement, merci !

Répondre à cet article

modération à priori

Attention, votre message n'apparaîtra qu'après avoir été relu et approuvé.

Qui êtes-vous ?
Ajoutez votre commentaire ici
  • Ce formulaire accepte les raccourcis SPIP [->url] {{gras}} {italique} <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Suivre les commentaires : RSS 2.0 | Atom