Zpip et la création rapide de pages

Le modèle de squelettes Zpip est organisé pour faciliter et accélérer le développement d’un site.

Deux fonctionnalités particulières permettent la création rapide de pages types dans votre squelette, en un minimum de développement.

Organisation de Zpip

Une page Zpip est composée de 6 blocs fonctionnels :

  • entete
  • barre de navigation (principale)
  • contenu
  • navigation (secondaire)
  • extra
  • pied

À ces 6 blocs constituant le <body> de la page, s’ajoute le head.

Les blocs d’entete, de barre de navigation principale et de pied sont communs à toutes les pages.
Le contenu, la navigation (secondaire) et le bloc extra sont déclinables pour chaque type de page.

Le head est mixte : une grande partie est commune à toutes les pages, et une petite partie déclinable.

Les déclinaisons de chaque bloc se font dans les dossiers homonymes : head/, contenu/, navigation/, extra/.

Chacun de ces dossiers contient un squelette dist.html qui est le bloc par défaut à utiliser lorsqu’aucun bloc spécifique n’est défini pour la page à construire.

La logique de fonctionnement de Zpip est que c’est le contenu qui prime : une page (complète) existe pour servir un contenu (le coeur de page, l’information principale).

Ainsi, sur la base de cette organisation et de cette logique, Zpip permet la création rapide de pages.

Pages automatiques

Le premier mécanisme concerne les pages particulières qui ne sont pas liées à un objet éditorial précis (page de contact, d’inscription ...) ou peuvent être une agrégation de contenus éditoriaux disparates (page d’accueil) ou hors classification (liste d’auteurs).

Ces pages sont en général accessibles sur le site par une url de la forme spip.php?page=xxx.

Dans le cas de Zpip elles sont implémentées par les squelettes

  • contenu/page-xxx.html ;
  • navigation/page-xxx.html ;
  • extra/page-xxx.html ;
  • head/page-xxx.html.

La fonctionnalité de page automatique est le mécanisme qui permet à Zpip de construire une page complète dès que contenu/page-xxx.html existe.

Ainsi une page de contact, accessible par spip.php?page=contact sera visible et utilisable en écrivant simplement le contenu concerné dans contenu/page-contact.html.

C’est suffisant, et Zpip complètera la page avec les blocs génériques et les blocs spécifiques dans leur version par défaut dist.html.

Ce mécanisme vous permet d’ajouter très vite de nouvelles fonctionnalités à votre site, en vous concentrant juste sur celles-ci.

Il permet aussi à des plugins de fournir un squelette de contenu pour une fonctionnalité particulière, ce qui la rend disponible dans votre site dès son installation, sans aucune manipulation, même si vous n’aviez pas prévu l’existence d’une telle page initialement.

Objets automatiques

Depuis la version 1.3 de Zpip, la fonctionnalité de page automatique a été étendue aux objets de SPIP. On désigne ici par objet un objet éditorial lié à une table SQL : un article, une brève, une rubrique, un auteur ...

Les objets sont en général accessibles par une url du type spip.php?page=objet&id_objet=.. (sauf en cas de réécriture d’url, qui cache cette écriture).

La page d’un objet éditorial peut donc être rendue disponible en écrivant simplement le squelette correspondant dans le dossier contenu :

  • contenu/article.html ;
  • contenu/auteur.hml
  • ...

Le seul point auquel il faut faire attention est le nommage : le nom du squelette correspond au nom de l’objet au sens de SPIP, et est donc en général le singulier de la table correspondante (article pour spip_articles, auteur pour spip_auteurs... ).

Ce mécanisme permet aux plugins de fournir une page réutilisable pour la présentation des nouveaux contenus éditoriaux ajoutés.

Échafaudage ou Scaffolding

Pour un nouvel objet éditorial associé à une table SQL, il est même possible de visualiser une page sans écrire une seule ligne de squelette.

Cette fonctionnalité est réservée aux webmestres, pour ne pas risquer de divulguer des informations non publiques aux autres utilisateurs du site (il faut avoir les droits de webmestre, soit par la définition de la constante _ID_WEBMESTRES pour SPIP 2.0, soit en ayant reçu le statut webmestre lors de l’installation de SPIP ou attribué par un autre webmestre).

Ainsi, si vous avez les droits suffisants, vous pouvez visualiser la page de tout nouvel objet éditorial existant. Si par exemple vous avez ajouté un objet evenement dans une table spip_evenements, vous pouvez visualiser l’url spip.php?page=evenement&id_evenement=1.

Zpip essayera alors de construire une page avec un squelette contenu/evenement.html. Si il ne le trouve pas et que vous êtes un webmestre, il va construire à la volée un squelette en se basant sur la structure de la table spip_evenements.

Ce squelette construit automatiquement vous permet de visualiser les données, et peut être utilisé comme point de départ à l’écriture de votre « vrai » squelette.

Pour ce faire, ajoutez &var_mode=inclure dans l’url pour visualiser le nom du squelette généré par Zpip et le copier ainsi dans votre dossier squelettes/ avant de le personnaliser.

Si vous utilisez le plugin SkelEditor cette opération est facilitée au maximum :

  • le bouton ’Squelettes&CSS’ vous permet de passer en &var_mode=inclure,
  • un clic sur le nom du fichier source échaffaudé vous permet de l’éditer directement dans l’espace privé,
  • un clic sur « Enregistrer » vous permet d’en enregistrer une copie dans le dossier squelettes.

Dernière modification de cette page le 9 février 2019

Discussion

19 discussions

  • 1

    Bonjour,

    j’ai installé z-pip il y a 3 ans, et pour l’instant je m’y tiens, j’ai déjà eu assez de mal à comprendre comment ça marchait ! J’ai aussi utilisé le thème Higher ground mais revisité à mon goût ; bref le site est là : www.elisabethmasset.fr

    Je suis en train de créer une boutique pour vendre des produits dérivés de mes dessins. Après m’être arraché les cheveux avec les plugins d’e-commerce ou de formulaires, sans succès, j’ai fini par faire exactement ce que je voulais, en javascript, avec un peu de php pour appeler mes listes de dessin, ça se passe là : http://www.elisabethmasset.fr/ARCHI...

    Maintenant, j’aimerais rapatrier ces deux pages (boutique.php et recapcommande.htm) dans mon site pour pouvoir bénéficier des styles mais je bute sur deux choses :
    -  est -il possible d’avoir, pour une rubrique ou un article, un body personnalisé, sans le menu latéral, pour gagner de la place ? Si oui comment faire ?

    -  beaucoup plus important : dans ma page j’appelle des listes de dessins dans des tables de la bdd créées pour ça avec ce type de code :

     <?
    $sql_query = "SELECT * FROM Aquarelles_boutik ORDER BY id ";       
    $result=mysql_query($sql_query); 
    while ($result && $row=mysql_fetch_array($result))
    {?>
    <tr><td height="7" class="auto-style10"><? echo $row['galerie'];?></td></tr>

    Comment puis je les faire fonctionner dans un article ? Avec un squelette spécifique et mesfonctions.php ?

    J’ai installé Compositions mais je n’ai je n’ai réussi à faire apparaître le moindre squelette dans le menu composition (après avoir pourtant suivi les instructions « spéciales zpip » à la lettre)

    Merci infiniment, par avance, de toute aide

    Zab

    • Bon, faute d’aide sur ces pages (zpip, compositions, formidable etc.) , je me suis débrouillée autrement, j’ai créé des pages extérieures à mon site Zpip mais avec le même look : http://www.elisabethmasset.fr/Petit..., entièrement programmées à la main.

      J’aurais quand même bien aimé savoir comment :
      1/intégrer des bouts de script php (ceux qui vont chercher une liste dans ma base) dans un article
      2/créer un body spécial (par exemple la colonne de droite) pour une rubrique particulière, ce que ne semble pas prévoir Compositions (qui de toutes façons ne marche pas chez moi)
      3/ assigner une valeur issue d’un calcul javascript à un champ d’un formulaire Formidable, pour qu’il l’embarque avec le submit. Impossible d’identifier le nom ou l’id des champs d’un formulaire donné...

      Si quelqu’un a du temps et un peu de bienveillance, n’hésitez pas !

      Zab

    Répondre à ce message

  • bonjour,

    J’ai un calendrier avec Zpip, et quand je clique sur un événement, je ne récupère pas la mise en page.

    Auriez-vous une idée ?

    http://librairielembarcadere.com/spip.php?page=agenda

    http://librairielembarcadere.com/spip.php?evenement57

    Répondre à ce message

  • Zpip permet la creation rapide de pages, y compris avec les plugins et les thèmes, mais il faut prendre garde à une (petite) subtilité :
    -  la feuille de style standard habillage.css (qui contient tous les styles « habituels » de SPIP) est souvent surchargée par les webmestres : soit dans perso.css, soit par l’intermediaire de plugins ;
    -  mais dans ce dernier cas, celle-ci surcharge aussi tous les plugins (puisque par défaut, la recherche des feuilles CSS se fait par ordre alphabétique, et dans Z/inclure/head.html, l’appel à habillage.css est après l’appel à #INSERT_HEAD_CSS.......

    Cela entreine que l’élimination de vos surcharges des habillages standards de SPIP, sauf si vous pensez à indiquer que votre plugin utilise ou necessite Z dans son fichier XML.

    Elémentaire.... mais facilement oublié (me too ;-) )

    Répondre à ce message

  • Bonjour

    Merci pour la contribution

    J’ai essayé de suivre l’installation de Zpip pas à pas, mais j’ai systématiquement des messages d’erreur dans la partie publique dès que j’installe un thème :

    « Aucun squelette inclure/entete n’est disponible...
    Aucun squelette contenu/ n’est disponible...
    Aucun squelette navigation/ n’est disponible...
    Aucun squelette extra/ n’est disponible...
    Aucun squelette inclure/pied n’est disponible... »

    J’ai beau relire la page du plugin Zpip et les commentaires je ne comprends pas pourquoi ce message apparaît.

    Est-ce qu’on peut m’aider pour installer ce plugin ?

    Site : http://www.compim-lyon.fr/vero

    Répondre à ce message

  • Bonjour,

    J’utilise J’utilise le squelette Einsteiniumist qui fonctionne avec zspip.

    J’ai fait un squelette page-formulaire_formidable.html pour afficher dans une mediabox des formulaires. Seulement ce squelette me garde le bandeau, le pied de mon squelette général.

    Comment shunter la mise en page zspip pour n’avoir que le formulaire ? Il faut sans doute encadrer le <a href=... de quelque chose mais je ne vois pas quoi après plusieurs essais...

    Page exemple, en bas de la page, le lien « Mots-clés dans la box » : http://malle-arts.org/spip.php?article3

    Merci beaucoup

    Répondre à ce message

  • Salut,

    Ça marche encore en 3.08/zpip v1 dist ?

    Je vient juste d’ajouter page-test.html dans contenu, contenant : « Blah blah » et rien :
    Aucun squelette test.html n’est disponible..

    Oups .... mauvais lien .... désolé ....

    Répondre à ce message

  • 6

    Tout d’abord, merci pour ce fabuleux plugin.

    Est-il possible d’avoir un body différent pour la page sommaire ?

    merci d’avance

    • Même question.....
      Ou tout du moins un entete spécifique pour le sommaire.
      quelqu’un a une réponse ?

    • Bonjour,

      J’ai déjà utilisé et fait fonctionner la fonction de création de pages automatiques toutefois elle ne fonctionne pas systématiquement sur tout mes sites utilisant Zpip et je n’ai pas pu en identifier la raison.

      Je travaillais ce matin sur un site en 2.1.8 avec un squelette basé sur Zpip, et j’ai créé un squelette contenu/page-auteurs : lorsque je l’appelle avec ?page=auteurs j’ai le message Aucun squelette auteurs.html n’est disponible... et la page 404 est affichée. J’ai repris la dernière version disponible de z_pipelines.php.

      J’ai peut être raté une étape ?

      Valéry

    • Bonjour,
      j’ai le même problème avec un Spip 2.1.10 et Zpip en 1.7.14. J’ai voulu utiliser le mécanisme de pages automatiques pour un système d’archive des brèves par année, avec des liens de la forme #URL_SITE_SPIP/spip.php ?page=breves-archive&annee=XXXX depuis la page d’accueil, mais l’appel à la page breves-archive se traduit par une Erreur 404 et le message ’Aucun squelette auteurs.html n’est disponible...’. J’ai bien mis un fichier breves-archive.html dans /contenu, ai-je oublié quelque chose ?

      Si quelqu’un a déjà eu et résolu/identifié ce soucis, je suis intéressé !

      Merci.

    • Bonjour,

      Dans le panneau de configuration, avez-vous bien renseigné le répertoire dans lequel Zpip doit chercher ses pages ?
      Si vous mettez vos pages dans squelettes/contenu/, vous devez renseigner « contenu » dans la page de configuration de Z.

      Sinon, est-ce que la boucle que vous utilisez dans ces pages renvoie un résultat ?
      J’utilise au quotidien cette mécanique et je n’ai pas rencontré de soucis…

    • Désolé pour le double post… J’ai oublié de mettre la réponse pour le body différent.

      Pour avoir quelque chose de différents pour la page sommaire, j’utilise [(#ENV{composition}|=={'sommaire'}|oui)] dans ma page squelettes/body.html
      Un exemple concret d’utilisation de cette méthode : http://zone.spip.org/trac/spip-zone...

    • J’ai ma réponse, bête problème de nommage dans mon cas (pas de préfixe page- ). Ca marche à présent, merci pour votre réponse (il faut que j’arrête de modifier des squelettes après minuit ...)

    Répondre à ce message

  • Bonjour

    Est-il possible simplement d’avoir un article type edito en haut de la liste des articles sur la première page du site.

    Merci pour votre réponse

    Répondre à ce message

  • Bonjour,

    je souhaite avoir un body différent pour une rubrique particulière (disons la rubrique 5 par exemple). Est-ce possible ? Si oui comment je dois l’appeler ?

    Merci d’avance !

    Répondre à ce message

  • 5
    Gerard Dupuichs

    Bonjour,
    J’utilise zpip avec le thème outdoor 1.0 Ceci est l’ébauche de mon site d’asso RIO.
    Dans le body de la page d’accueil, je souhaite limiter le nombre des « derniers articles » affichés et surtout, ne laisser que le titre, date et nom d’auteur en supprimant les premières lignes du texte de l’article J’ai essayé dans le fichier zpip/inclure/article-resume.html en mettant en commentaires les lignes relatives à l’intro et entry-content. C’est sans effet. Alors, je ne trouve pas le bon fichier. Please help !

    • Bonjour

      As tu essayer d’utiliser skeleditor ? il te permets de liste tous les inclure de ton site et de le modifier en live sur ton site.

    • Gerard Dupuichs

      Merci de ta réponse, J’ai chargé skeleditor, l’ai transféré sur le serveur et activé comme plugin, J’ai bien le nouveau bouton « squelettes&css » avec toutes les url des pages (qui sont bien celles que j’avais identifiées). J’ai créé un dossier squelettes/ à la racine du site mais on me demande toujours d’en créer un lorsque j’essaye d’afficher un code et le dossier squelette reste désespèrément vide... Alors ???
      Cordialement

    • tu as mis les bon droits sur le dossier squelettes ?

    • Gerard Dupuichs

      Elementaire, mon cher Watson ! je n’avais pas vérifié les droits... MERCI

    • Gerard Dupuichs

      Cet outil squeleteditor est très performant, je suis parvenu à mes fins. MERCI ENCORE
      Gérard

    Répondre à ce message

Ajouter un commentaire

Qui êtes-vous ?

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