Carnet Wiki

Quels squelettes : dist, Z & compagnie

Version 17 — Mars 2013 YannX

Quelques pistes pour choisir une base de développement pour les squelettes, s’orienter dans la Zone [1] et s’informer ; connaissant Un survol des squelettes de la dist SPIP v2[fr/?Quel-squelette-modifier,224" class="spip_out" rel="external">Valide en SPIP 3, voir [.]]

<blockquote class="spip">

quel jeu de squelettes choisir pour démarrer la personnalisation de son SPIP ?

</blockquote>

En résumé :
-  autrefois était la dist (des squelettes mono-fichiers, structurés avec les id de blocs <div>) pedagoqique et toujours utilisée
-  une réflexion étendue d’un core-dev [2]sur une méthodologie plus performante pour développer des pages : Un-framework-HTML-est-il-possible ?est au début de Z :
-  Le projet Zpip a donné en application CleverMaila donné en application Zpip , pluginisé en Zdist (et stabilisé en Zdist_v1 !)
-  z-dist v2 : une évolution qui s’est structurée en
le mécanisme Z-Core , appliquant le mécanisme Z de gestion des blocs par défaut, validant la normalisation des blocs pour les thèmes
à compléter avec :

  • un thème Z : Thèmes Z)
    - z-dist v2  : une évolution qui s’est structurée en
    _
    le mécanisme Z-Core , appliquant le mécanisme Z de gestion des blocs par défaut , validant la normalisation des blocs pour les thèmes
    _
    à compléter avec  :
  • un thème Z  : apportant les habillages personnalisés,
    -* une bibliothèque de noisettes à reprendre (ou à construire)
  • zpip-dist reste compatible (et serait nécessaire pour gérer les 404)
  • spipr-dist est l’autre bibliothèque en cours d’évolution,qui devrait être pérennisée.

Par exemple Initializr vous illustre une démarche de mise en oeuvre en pratique.

A coté, viennent compléter les usages de ZPIP :
-  un Zdist-HTML5, à rapprocher de Z5
-  zpip-reset a comme « raison d’être » l’annulation (protection) de tous les squelettes par défaut,
pour ne rien afficher qui ne soit voulu..
-  Z-vide : c’est un zpip qui a été conçu pour intégrer le plugin http://www.spip-contrib.net/noiZetier, [3]

Donc aujourd’hui [4], l’avenir sera peut-être Z-Core + Spipr pour spip 3 ;
mais la version conseillée reste encore Zpip_v1 (et Z_reset) en SPIP2 ou en SPIP 3


Rappelons que SPIP utilise un ensemble de fichiers de « gabarits » ou « templates » au format standard HTML pour construire l’apparence des pages publiques de votre site dynamique, tant pour l’habillage graphique en CSS et thèmes, que pour l’affichage de vos articles (à condition qu’il y ait quelque contenu publié dans votre base de données).

Chaque fichier HTML est utilisé pour répondre à un appel de page défini par un lien URL provenant d’une autre page, paramétré par l’identifiant id_ de l’enregistrement principal à afficher (article, rubrique, mot-clé..) ; en interne, SPIP pilote les pages du site par les divers fichiers type de page (voir [-http://contrib.spip.net/SPIP-1-9-Comment-fonctionnent-les], meme si cette orthographe standard des liens peut etre modifiée extérieurement par URL-rewriting.

SPIP utilise un jeu de squelette, avec au moins un fichier par type de squelette appelé :
Il y a plusieurs solutions, des concepts divers de jeux de squelettes :
-  le jeu des squelettes de la dist fournissent un jeu de fichiers standard Dist (orienté édition actualisée / journal), couvrant la plupart des besoins standard sous forme d’un fichier principal par squelette [5] avec un objectif pédagogique d’initiation progressive...
-  des plugins de Interface publique proposent un large choix de jeux de squelettes complets prêts à l’usage ou paramétrables,
-  les squelettes habillables par des thèmes graphiques interchangeables sont développés autour de la normalisation d’un Modèle de squelette réutilisable Z, pour offrir plus de facilité à l’adaptation graphique (Thèmes Z) sans remettre en cause le code HTML écrit dans les squelettes, et pour faciliter la Zpip et la création rapide de pages de nouveaux squelettes adaptables ou plus personnalisables.

<blockquote class="spip">

Attention : cet article rappelle un état de fait, valable au moment de sa rédaction en Carnet ; cette perception pourra évoluer en fonctions des développements menés au printemps 2012 et ensuite, avec une seconde partie début 2013 (Zcore et SPIPr) !
Les éléments indiqués ici sur SVN sont non-stables : donc à vérifier en vous informant directement sur la liste et IRC..

</blockquote>

Le Jeu de squelettes de la dist

La Distribution habituelle de SPIP comprend un jeu de squelettes éditoriaux, assez complets dans le répertoire ./squelettes-dist : ces squelettes sont monolithiques, à savoir que chaque page est générée à partir d’un seul fichier squelette, plus facile à lire et à comprendre.

L’objectif de ces squelettes est de vous offrir d’abord une environnement utilisable sans souci, pour que vous puissiez facilement voir affiché le contenu saisi dans votre site.
De plus, ces squelettes sont commentés (et éprouvés), donc tout le monde les connait, et vous n’aurez pas trop de difficultés à commencer à les modifier : ils ont en effet une valeur d’exemple pédagogique des nombreuses possibilités des boucles de SPIP.

Nota Bene : pour éviter de voir « sortir » des pages imprévues, car les squelettes de SPIP sont nombreux, vous pouvez utiliser un plugin de surcharge/reset,pour ne rien afficher que vous n’auriez vous-même construit.

En revanche, pour personnaliser l’ensemble de votre site, vous devrez uniquement intervenir en surcharges [6] des CSS, ou sinon répéter toutes les modifications sur chacune de vos pages, ce qui devient rapidement pénible.

D’autres présentations de données

Pour les squelettes de la dist, il faut aussi indiquer que leur finalité [7] s’applique essentiellement à un site d’activité éditoriale, devant présenter surtout des nouveautés régulièrement publiées.

Pour proposer des organisations plus complexes, ou répondant à d’autres objectifs, de nombreux squelettes ont vu le jour, désormais plutot en plugins : vous pouvez parcourir sur Contrib Interface publique ; vous y trouverez aussi bien des Squelettes généralistes et Squelettes éditoriaux que des Squelettes spéciaux ou des blogs tout prêts, qui n’ont rien à envier aux ténors du genre, comme Squelette The Morning After.

Certains sont largement paramétrables, d’autres vous permettent de choisir vos noiZettes (voir ci-dessous)...
Mais leur programmation plus avancée vous donnera peut-etre beaucoup de travail pour les personnaliser et adapter à vos besoins.

La structure Z, et les thèmes

C’est en tenant compte de ces contraintes, plus difficilement supportables quand on a acquis une meilleure compréhension du fonctionnement des squelettes, qu’une seconde organisation (dite Z.. ) a vu le jour au début 2010.

Le principe retenu dans ce FrameWork est un mécanisme structurant chaque page à partir des blocs spécifiques du même nom, utilisant sinon le bloc par défaut (noisette dist.html).

Tous ces plugins ont en commun un noyau [8] pour faire ressortir des différentes pages, les pavés noisettes communs (en général le pied de page, l’entete, les pavés latéraux de navigation ou d’extra..souvent isolés dans des noisettes distribuées dans toutes les pages du site) ;ceci facilite la gestion et la programmation spécifique spécifique d’une page, dans une seule noisette de ./squelettes/contenu, en prenant soin de transmettre l’environnement aux noisettes appelées.

Le concept est très largement documenté, au moins dans la version pour SPIP2 en zpip_v1, facile à récupérer comme tout plugin traditionnel, ou sinon, en Svn, à coté d’une v2 réservée SPIP 2.

Au prix d’une compréhension de la modularité de squelettes, avec les noisettes de chaque page au même nom, mais réparties dans des dossiers par localisation, le développement et le test de nouvelles pages devient tres rapide ; de plus, cette structure normalisée sert de base à une gestion des thèmes graphiques normalisée, grace au plugin Zen Garden [9], thèmes testables directement ici ...
Noter également (beaucoup moins connu) le plugin Les Layout GALA appliquable à Zpip [10].

Zdist-v1 reste compatible avec l’arrivée de SPIP 3, qui intègre dans le core plusieurs fonctionnalités testées précédemment en plugins [11] ; une nouvelle version est en-cours d’étude, encore en développement), et elle est actuellement un peu plus complexe à recharger :

C’est un plugin en deux parties (comme les champs extras), et uniquement applicable a la version SPIP 3 :
-  Z-Core est désormais le noyau de l’évolution de Z : il fournit le mécanisme d’accès par blocs, qu’il partage entre Zpip-dist ou autres squelettes (les fonctionalités du framework Z)
vous pouvez récupérer le z-core sur la zone, comme tout plugin.
-  pour fonctionner, et donc remplacer le jeu de squelettes de la dist, ce mecanisme doit disposer d’une bibliothèque organisée de noisettes fournissant les blocs qui seront insérés dans la structure retenue.
vous devrez aussi recharger en SVN une version actuelle d’habillage (il semblerait que plusieurs développements co-existent) :
-  Zdist-v2 : au format traditionnel
-  Z5 est un fork orienté HTML5, comme d’ailleurs la version homonyme en SPIP 2, en-cours de developpement [12]....


Et maintenant , un an après ... 2013

D’abord, la préférence pour ZPIP v1 en production reste la norme conseillée... particulièrement bien documentée sur Contrib : Thèmes Z, elle sert de fondation à la gestion des Thèmes Z.

Z-Core est encore « en test » ; outre HTML5 déjà évoqué plus haut, Cerdic s’intéressait aussi à Bootstrap ....

Cela a conduit à finaliser la re-structuration de ce projet :
z-core c’est le moteur : système de gestions de squelettes en Z, mécanismes automatiques, outils, filtres, briques communes pour les squelettes.
Cette partie là est quasi-stable et c’est sans risque de l’utiliser.

Mais on ne peut faire fonctionner Z-Core tout seul ; il faut lui adjoindre un jeu de squelettes complémentaires, spipr-dist, zpip-dist..
sinon c’est sur qu’il va te manquer un paquet de pages publiques !

Ainsi dans Zpip-dist v1 il y a aussi tous les squelettes typiques de la dist par défaut, avec des conventions de nommage, de classe, de structure etc... clairement documenté.
C’est tout cela qui est documenté.
Cette partie là était en chantier de migration vers une v2 ici http://zone.spip.org/trac/spip-zone...
dont le développement est abandonné pour le moment.

<blockquote class="spip">

J’ai forké le projet pour en faire une version renommée SPIPr et basée notamment sur BootStrap, et directement en HTML5 :
http://zone.spip.org/trac/spip-zone/browser/_squelettes_/spipr-dist
avec des variantes sur la même base :
http://zone.spip.org/trac/spip-zone/browser/_squelettes_/spipr-blog
http://zone.spip.org/trac/spip-zone/browser/_squelettes_/spipr-doc
et
http://zone.spip.org/trac/spip-zone/browser/_squelettes_/sarkaspip/trunk/

</blockquote>

 [13]

En résumé :
-  autrefois était la dist (des squelettes mono-fichiers, structuré avec les id de blocs)
-  au début, une réflexion étendue d’un core-dev [14] sur une méthodologie plus pointue pour développer des pages...
-  la mise-en-application donne Zpip, pluginisé en Zdist (et stabilisé en Zdist_v1 !)
-  z-dist v2 : une arlésienne (!) qui s’est structurée en
un mécanisme Z-Core , appliquant le mécanisme Z de gestion des blocs par défaut, validant la normalisation des blocs pour les thèmes
à compléter avec une bibliothèque de noisettes à reprendre (ou à construire) :

  • zpip-dist reste compatible (et serait nécessaire pour gérer les 404)
  • spipr-dist est l’autre bibliothèque en cours d’évolution

A coté, viennent compléter les usages de ZPIP :
-  un Zdist-HTML5, à rapprocher de Z5
-  zpip-reset a comme « raison d’être » l’annulation (protection) de tous les squelettes par défaut,
pour ne rien afficher qui ne soit voulu (cf. Spip-reset)..
-  Z-vide est un zpip conçu pour intégrer le plugin http://www.spip-contrib.net/noiZetier ;il ne peut fonctionner sans le noisetier,
 [15]

-  Z-Core le moteur Z : c’est ce qui permettra de faire fonctionner des squelettes -en Spip 3- sur le principe de Zpip (car Zpip fonctionne en récupérant toutes les erreurs 404 de pages non-trouvées, pour relancer la recherche avec les préfixes page- dans les sous-répertoires contenu, extra, navigation...
=> il faut donc lui rajouter des squelettes donc et z-core ne marche pas sans un truc comme z-dist2 ? (mais qui pourrait être z-autre alors, ou Z5 ?)

Donc aujourd’hui [16], l’avenir sera peut-être Z-core + Z5 pour spip 3 ;
mais vous pouvez toujours utiliser Zpip_v1 (et Z_reset)

Donc aujourd’hui [17], l’avenir sera peut-être Z-core + Spir pour spip 3 ;
mais vous pouvez toujours utiliser Zpip_v1 (et Z_reset)