Une fois compris le principe des pages récupérant les données variables de chaque article (ou rubrique), au sein d’un fichier squelette (gabarit définissant la forme d’habillage graphique), se pose le problème- classique en développement informatique- d’optimiser le ré-emploi des codes déjà écrits : toutes les pages du site auront généralement la même apparence, en particulier le meme entete général, avec un logo et un menu, le meme pied de page.... tous éléments que notre webmestre va devoir remettre dans chaque fichier squelette.
Et toute modification apportée dans une page, oblige à la reporter dans toutes les autres pages de squelettes....
Le concept
L’idée [1] est simplement de coder une fois chaque élément ou groupe HTML souvent dans les "div", d’en faire à chaque fois une noisettes autonome, puis, plutot que de simplement en refaire l’assemblage pour construire chaque squelette comme dans Squelettes de la "dist", de faire faire ce même assemblage directement par SPIP, à la compilation de squelette...
On commence bien sur toujours par organiser Les Gabarits/Layout de pages , ce qui permet de décrire la structure globale d’une page, composée par blocs (comme des maisons en préfabriqué).
Chaque bloc va être nommé (de façon normalisée pour toutes les pages) dans une structure commune du <body ...
HTML qui est alors utilisée dans tous les squelettes ; et puisque la structure est commune, et donc que souvent les blocs noisettes sont communs et se retrouvent au même endroit, sauf pour le contenu principal, laissons directement SPIP-Z charger chaque bloc à l’endroit correspondant, identifié par le même nom de bloc.
En résumé
Nous avons donc à savoir construire un/des squelettes :
chacun avec son nom de page repris des Squelettes de la "dist"
utilisant une structure de blocs communs et annexes (sauf exceptions)
mais avec un contenu principal unique à son nom.
si d’autres blocs doivent venir dans une page, il faut préciser :
et le nom de bloc concerné, et le nom de la page principale concernée !
La mise en œuvre
Elle tient en quelques éléments d’organisation :
Les noms de pages (nom des squelettes principaux) doivent toujours respecter la nomenclature Squelettes de la "dist".
la noisette contenu principal de chaque page est toujours mise dans un fichier squelette, au nom de la page, enregistré dans un sous-répertoire désigné pour le contenu principal [2]
Aux autres divers noms de blocs vont correspondre d’autres sous-dossiers de même nom, également rangés dans Le dossier ./squelettes.
par simplification, la noisette commune dans chaque bloc (et donc rangé dans chaque sous-dossier) sera codée dans un fichier squelette nommé dist.html
les exceptions, noisettes particulières à une page dans un emplacement de bloc, seront des fichiers squelettes au nom de la page dans le dosser du bloc concerné.
Et le travail de SPIP
Cette organisation rigoureuse renforce l’aspect "lego" de la conception de site SPIP ; pour que le moteur de SPIP adopte ces règles d’assemblage, on doit simplement l’informer par un plugin, de la liste des blocs à INCLURE au sein d’un squelette de Structure de page, et préciser en tete de la liste des dossiers de blocs, le dossier des blocs principaux correspondant aux noms de pages...
C’est tout juste ce que font les deux générations de modules :
Passer à Zpip (pratique) (et comment Convertir un jeu de squelettes en Zpip)
ou plus simplement,
Utiliser Z-core, le futur de Zpip pour Spipr avec des noms plus simples...
Article publié le 26 juillet 2016, et actualisé en décembre 2019 .
Répondre à cet article