Carnet Wiki

Quels squelettes : dist, Z & Co

Version 15 — Mars 2013 YannX

Quelques pistes pour s’orienter dans la Zone [1] et Choisir des bases ;
les jeux de squelettes pour démarrer la personnalisation de son site.

<blockquote class="spip">

Attention : cet article décrit un état de fait, 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.. voir par exemple Doc SPIP3 : structure des squelettes du privé

</blockquote>

Rappelons que les squelettes définissent 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 dan votre base de données).

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 [2] 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é [3] 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 que 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... Mais vous aurez peut-etre autant de travail pour les 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 [4] 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 [5], thèmes testables directement ici ...
Noter également (beaucoup moins connu) le plugin Les Layout GALA appliquable à Zpip [6].

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 [7] ; 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 [8]....


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>

 [9]

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 [10]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 c’est un zpip qui a été conçu pour intégrer le plugin http://www.spip-contrib.net/noiZetier  ;il ne peut fonctionner sans le noisetier,
 [, il ne (…)" id="nh11">11]
ou Z5  ?

- 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 [Donc  (…)" id="nh12">12], l’avenir sera peut-être Z-core + Z5 pour spip 3 ;
mais vous pouvez toujours utiliser Zpip_v1 (et Z_reset)

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