Carnet Wiki

Quels squelettes : dist, Z & compagnie

Quelques pistes pour choisir une base de développement pour les squelettes, s’orienter dans la Zone(elle des squelettes ;-) ! ) et s’informer ; en utilisant toujours la liste des pages-type décrite en Un survol des squelettes de la dist SPIP v2 valide en SPIP 3, voir https://spippourlesnuls.fr/?Quel-sq....]]

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

En résumé [1] :

  1. autrefois était uniquement la squelettes-dist [2]

Le texte ci-dessous conserve les rédaction de 2013, pour faciliter la compréhension historique...
-  une réflexion étendue d’un core-dev [3] 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 Zpip, pluginisé en Zdist (et stabilisé en Zdist_v1 !)
-  l’ évolution structurée en Z-core pour le mécanisme Z de gestion des blocs par défaut,
(avec une normalisation distincte des blocs pour des thèmes incompatibles avec Zpip_v1)
plugin à récupérer sur la Zone.
à compléter avec :

  • un thème Z : Thèmes apportant les habillages personnalisés,
    voir http://zone.spip.org/trac/spip-zone...
  • 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 rester pérenne !

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, [4]

-  et beaucoup de spipeurs, par exemple Romy, tiennent la communauté informée des évolutions de HTML, qui prône une structure de page sémantique !

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


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 Squelettes de la Dist (orienté édition actualisée / journal), couvrant la plupart des besoins standard sous forme d’un fichier principal par squelette [6] avec un objectif pédagogique d’initiation progressive...
-  des plugins de Public UI 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) 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.

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..

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 [7] 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é [8] 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 Public UI ; 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 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, recherché dans un sous-répertoire par panel défini dans le design de page, utilisant sinon le bloc par défaut (noisette dist.html).

Tous ces plugins ont en commun un noyau [9] 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 très rapide ; de plus, cette structure normalisée sert de base à une gestion des thèmes graphiques normalisée, grâce au plugin Zen Garden [10], thèmes testables directement ici ...
Noter également (beaucoup moins connu) le plugin Les Layout GALA appliquable à Zpip [11].

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 [12] ; 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 à 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 fonctionnalité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 mécanisme doit disposer d’une bibliothèque organisée de noisettes fournissant les blocs qui seront insérés dans la structure de body.html 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 [13]....


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, elle sert de fondation à la gestion des Thèmes.

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és.

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.

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/

 [14]

[1Pour 2015, les trois choix ci-dessous selon votre objectif...

[2:
des squelettes mono-fichiers, structurés avec les id de blocs <div> :
celle-ci est toujours utilisée, car simple et plus pédagogique pour un premier contact =
selon le principe : une page-type du site correspond à un fichier HTML de squelettes
(seules quelques noisettes sont utilisées par #INCLURE , en particulier entête et pied ..)

  1. une réflexion structurante aboutit à l’organisation Zpip (toujours utile pour SPIP 2.1 ) :
    un modèle de structure du body valable pour toutes les pages du site,
    simplement chaque page-type est créée par le seul bloc principal de ./contenu,
    une normalisation des blocs accessoires permettant de surcharger la proposition par défaut dist.html
    (cette organisation Zpip introduit aussi le changement d’apparence par un seul thème interchangeable).
  1. l’évolution de Zpip devient Z-core utilisable seule, ou intégrée dans un package spipr
    distinguant nettement Z-core du jeu de squelettes et du thème éventuels
    (donc conservation du principe de blocs, mais avec une autre liste inspirée de HTML5)
    à compléter de vos blocs de squelettes et de thèmes pour obtenir un site personnalisé
  1. on ne s’occupe pas ici des Public UI déjà personnalisés proposés sur Contrib, (ni -et c’est un tort /désolé/-des utilisations de Composition[[Le plugin Compositions, et l’article de... Joseph À propos de Zpip, de Compositions,... sur le sujet !

[3Cerdic en l’occurence

[4Donc il ne peut fonctionner sans le noisetier/Aveline, sauf nouveautés...c’est surtout Joseph qui pourrait vous en parler, c’est son bébé ça !

[5Début mars 2013,mais depuis vous lirez plutôt SPIP et les frameworks (Z et autres) !

[6Seules quelques noisettes sont mutualisées dans la dist.

[7Les fichiers homonymes que vous recopierez depuis ./squelettes-dist dans le répertoire à créer./squelettes seront prioritaires sur les fichiers d’origine..

[8La présentation gérée par les BOUCLES de ces squelettes

[9Ce fonctionnement sera isolé dans Z-Core, pour être mutualisé dans cette série de plugins.

[10Les connaisseurs du monde CSS réagiront immédiatement, par référence au site CssZenGarden, qui a démontré toutes les puissances du CSS pour changer les apparences d’un même code HTML de squelettes

[11Pareillement, la structure de LayoutGala fait partie des incontournables du Web.

[12Bonux, la configuration, les formulaires CVT...

[13Un article va être consacré à leur documentation...

[14Cerdic doit encore s’est appliqué à faire la doc de tout cela ( voir http://spipr.nursit.com/?page=plan), mais confirme que c’est SPIPr qui sera maintenu.

Pour faire simple :
-  vous débutez :

  • commencez avec la la dist (des squelettes en mono-fichier structuré avec des id de blocs div)
  • ou vous utiliserez un squelette généraliste ou configurable...

-  vous développez : le concept Z devrait vous faciliter la tache
Le principe est de composer toute nouvelle page autour d’un seul bloc obligatoire de contenu central, Z complétant la structure avec les blocs eponymes issus des autres répertoires, ou insérant le bloc dist.html idoine par défaut.
(Z vous permet aussi d’utiliser les Thèmes interchangeables).

  • vous privilégiez la stabilité de la version zpip_v1 fiable et documentée, en production SPIP2 ou SPIP 3.
  • vous utilisez le mécanisme Z-Core (avec HTML5 / spipr-dist /bootstrap’n’co) en construisant vous-même tous les blocs nécessaires d’après migration.txt [1] ou en chargeant aussi un jeu de squelettes spipr : spipr-dist, spipr-doc spipr-blog

Voir http://contrib.spip.net/ecrire/?exe...

YannX - Mise à jour :21 April 2015 at 21:52