Créer des squelettes avec Zcore

Ou comment bien démarrer avec Zcore.
Avec SPIP 3.0 est venu le plugin Zcore développé par un collectif de spipeurs. De plus en plus d’utilisateurs adoptent la mécanique de « Z » pour leurs squelettes. Ce premier article est écrit pour expliquer la Différence entre Zcore et Zpip v1.x.
Le présent article vous expliquera où vous rappellera comment mettre en place cette architecture sur un site pour éviter de s’arracher les cheveux.
Voir aussi le Plugin « Initialiser Zcore » et Organisation des scripts avec Zcore.

Préambule

En aucun cas, Zcore ne nécessite l’utilisation d’un framework CSS déterminé. Vous pouvez utiliser les feuilles de styles que vous voulez.

De plus, avant de commencer tout projet, il est nécessaire de se poser et de réfléchir à la structure que l’on désire avoir sur son site. Par exemple, l’architecture des répertoires adoptée par SPIPr-Dist est propre à ce plugin. Elle peut vous convenir comme elle peut aussi ne pas convenir à votre projet.

Première étape

Il vous faut installer le plugin Zcore dans votre répertoire « plugins » qui doit se trouver à la racine de votre site. Pour plus d’informations sur les procédures d’installation de plugins, vous pouvez vous référer à l’article dédié.

Depuis l’espace privé de SPIP, vous activerez le plugin Zcore depuis la page de gestion des plugins.

Ajouter une ligne dans mes_options.php

Zcore a besoin de savoir quels sont les dossiers ou plus exactement les « blocs » qui entrent dans son architecture « Z ». Entre autres choses, cela permet d’avoir un fichier par défaut (cf. dist.html) lorsque vous n’avez pas créé de squelettes HTML pour la page consultée. Il faut ajouter la ligne suivante dans votre fichier mes_options.php :

$GLOBALS['z_blocs'] = array('content', 'head', 'head_js', 'header', 'footer');

Avec ces valeurs, Zcore s’attend à avoir les répertoires suivants dans votre dossier squelettes/ :

  • content : qui contiendra le contenu central de votre page. C’est le nom conventionnel et historique pour Zcore. Il est obligatoire ;
  • head ;
  • head_js ;
  • header ;
  • footer.

Pour plus d’explications, vous pouvez vous référer à l’article sur le framework Z sur le site dédié à SPIPr.

Les squelettes

Les étapes précédentes réalisées, votre site sous « Z » ne sera pas encore opérationnel. Car SPIP par l’intermédiaire de Zcore s’attend à trouver dans le répertoire content/ un squelette pour chaque objet éditorial désiré.
Ainsi, vous pourrez avoir dans content/article.html les boucles adéquates pour afficher le contenu voulu sur la page article. Il sera de même pour chaque objet que vous désirez afficher dans l’espace publique.
SPIP-Zcore passera toutes variables nécessaires pour que content/article.html puisse fonctionner au mieux.

Si vous avez des besoins d’informations particulières, vous pouvez créer à la racine de votre répertoire squelettes un fichier correspondant à vos besoins.
A minima, pour un fichier squelettes/article.html, vous devez y mettre ceci :

<BOUCLE_principale_article (ARTICLES) {id_article}>
<INCLURE{fond=structure, env, id_rubrique=#ENV{id_rubrique,#ID_RUBRIQUE}, id_secteur=#ID_SECTEUR, type-page=article, composition=#COMPOSITION} />
</BOUCLE_principale_article>

Encore une fois, ce fichier est nécessaire que si vous désirez ajouter des variables d’environnement particulières à squelettes/content/article.html

Les squelettes pour les pages

Pour tous vos objets éditoriaux issus de la base de données (donc correspondant à une table), il vous faut créer un fichier html correspondant à la racine du répertoire squelettes/content/.

Pour toutes les autres pages de l’espace public qui ne font pas références à un objet, il en va de même. Il faut créer un fichier html dans le répertoire squelettes/content/. Ces pages sont appelées par ?page=sommaire, ou encore ?page=login etc.

Le point fort de Zcore est qu’il n’est pas nécessaire de mettre le préfixe page- dans le nom du fichier html, ni de mettre un fichier sommaire.html à la racine de squelettes/. (C’est l’une des différences avec le plugin Zpip, son prédécesseur.)

Le fichier par défaut

Comme il a été dit plus haut, Zcore va chercher le fichier correspondant à la page consultée dans chaque répertoire faisant partie de son architecture. Si vous n’avez pas créé ce fichier html, Zcore va prendre le fichier dist.html. Ce dernier est très utile pour ne pas avoir à répéter du code commun à toutes les pages.

Toutefois, il existe une exception : le répertoire content/. C’est le seul répertoire qui doit absolument contenir un fichier correspondant à la page consultée.

2 fichiers importants

Le plugin Zcore fournit 2 fichiers qui déterminent la mise en page :

  • structure.html ;
  • body.html.

Le fichier structure.html est appelé par les différents squelettes d’objets éditoriaux que vous avez créé dans les étapes précédentes. Il contient le code à mettre entre les balises html <head>…</head> et l’appel du fichier body.html. Vous pouvez vous référer à celui de Zcore : https://git.spip.net/spip-contrib-e...
Le fichier body.html contiendra tout ce que vous désirez mettre entre les <body>…</body>. N’oubliez pas de mettre ces dernières balises dans votre fichier body.html si vous utilisez le fichier structure.html de Zcore.

Compléments

Pour un démarrage facile
Sans aller jusqu’à utiliser SPIPr, voir le Plugin « Initialiser Zcore » du même auteur, ainsi que Organisation des scripts avec Zcore et sur le Carnet zcore-pratique.

Pour aller plus loin
Dans ce présent article, vous avez pu voir l’utilisation de 5 blocs : content, head, head_js, header, footer. Si vous désirez ajouter d’autres blocs dans votre mise en page et ainsi bénéficier des fichiers par défaut, il vous suffit de rajouter le nom de ce nouveau bloc (ex : aside) dans votre fichier mes_options.php :

$GLOBALS['z_blocs'] = array('content', 'head', 'head_js', 'header', 'footer', 'aside');

Balises et outils fournies par ZCore

Zcore fournit 2 nouvelles balises
-  la balise #SI_PAGE : elle reçoit un nom de page comme argument, et renvoie vrai si cet argument est la page courante.
Exemple d’usage :

[  (#SI_PAGE{sommaire}|oui) <INCLURE{fond=alaune}>]

-  la balise #CSS

-  Il est d’utiliser un squelette body différent pour chaque page : body-article.html, body-rubrique.html etc. C’est bien utile lorsqu’on sort des template standards.

-  La variable globale PHP z_blocs_404 définit la condition pour qu’une page d’erreur 404 soit générée. Par défaut il suffit que le bloc principal (le 1er dans la liste des blocs) soit vide. Il est cependant possible de modifier ce comportement, par exemple en disant qu’il faut que à la fois le bloc ’content’ ET le bloc ’aside’ soient vides :

$GLOBALS['z_blocs_404'] = array('content', 'aside');

Avec cette indication, la page 404 ne sera appelée que si content/xxx et aside/xxx sont vides tous les deux... Pour éviter un bouclage infini, il faut que ces 2 blocs ne soient pas vides dans la page 404 elle-même.

En savoir plus

Conclusion

En suivant ces quelques étapes, il est très facile de démarrer un projet sous l’architecture de Zcore. Cette mécanique de structure de fichiers est très pratique pour mettre en place un site internet. Vous ne pourrez plus vous en passer !

Discussion

Aucune discussion

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom