Créer de nouvelles compositions et de nouvelles pages avec Zpip-vide

Le squelette Zpip n’est plus maintenu, il est remplacé par SPIPr-dist

Pré-requis

Le plugin Compositions doit être installé et activé sur votre site.

Créer une composition au travers d’un exemple

Les pages de Zpip-vide reposant uniquement sur des configurations de noisettes à l’aide du noiZetier, il est aisé de créer une nouvelle composition à l’aide du mécanisme des compositions du noiZetier (pour plus de détails, voir la documentation du noiZetier).

Supposons que je souhaite que certains articles n’affichent pas de portfolio mais que les images jointes soient considérées comme de simples documents joints.

Tout d’abord, il faut se rendre sur la page de Gestion des compositions du noiZetier (lien dans la boîte en haut à gauche de la page principale du noiZetier).

Puis cliquer sur Créer une nouvelle composition.

Remplir le formulaire avec les éléments suivants :

  • Type : article
  • Identifiant : sans_portfolio
  • Titre : Article sans portfolio

et Enregistrer.

Revenir à la page principale du noiZetier en cliquant sur Retour.

La page Article sans portfolio est maintenant visible dans la liste des pages du noiZetier. Cliquer sur Configurer les noisettes de cette page.

Il apparaît qu’à sa création, les noisettes de cette page sont les mêmes que celles de la page Article. Il ne reste plus qu’à supprimer la noisette Portfolio de l’article et à modifier les paramètres de la noisette Documents de l’article pour ne pas exclure les photos du portfolio.

Enfin, il ne reste plus qu’à appliquer aux articles concernés la composition Article sans portfolio (cela se fait avec le formulaire Composition présent sur la page de modification chaque article dans l’espace privé).

Création d’une nouvelle page

La création d’une nouvelle page suit la même logique que la création d’une composition. En effet, Aveline autorise la création d’une composition du noiZetier du type Page. Cette dernière est alors accessible via l’URL spip.php ?page=identifiant.

Par exemple, si l’on souhaite créer une page spécifique pour afficher les mentions légales du site à l’aide d’un bloc de texte, il suffit de créer une composition du noiZetier avec les paramètres suivants :

  • Type : page
  • Identifiant : mentionslegales
  • Titre : Mentions légales du site

Cette page sera alors configurable dans le noiZetier comme n’importe quelle autre page. On pourra par exemple y inclure un bloc de texte avec les mentions légales à afficher. Cette page sera accessible via l’URL http://monsite.net/spip.php?page=mentionslegales.

Discussion

3 discussions

  • 1
    korama

    Bonjour,

    voilà, j’ai un petit problème. En effet j’aimerais avoir 3 configurations de pages spécifiques pour le site :

    -  une page sommaire sur 3 colonnes
    -  des pages normales sur une seule colonne, sans nav secondaire ni extra,
    -  des pages spécifiques avec une nav secondaire

    Comment puis je régler ça dans Aveline avec Compositions ? Est-ce possible ?

    • Il est tout à fait possible de définir vos propres blocs. Par contre, cela vous fera perdre la compatibilité avec les thèmes Z et vous devrez définir votre propre thème.

      Si j’ai bien compris la structure de votre site :

      • Vos pages par défaut ont un seul bloc : contenu.
      • Vous avez pour les articles et les rubriques (à étendre à d’autres objets au besoin) une composition (que je vais appeler nav) avec deux blocs : contenu et navigation.
      • Enfin votre page d’accueil a trois blocs. Le premier bloc va devoir s’appeler contenu (le bloc de base est nécessaire pour toutes les pages). Les deux autres seront col2 et col3.

      Je fais l’hypothèse que vous utilisez Aveline + noiZetier + Zpip-vide.

      Vous allez donc créer votre propre thème personnalisé qui définira tous les éléments de la structure de votre site. Ce thème sera donc sous la forme d’un plugin (voir donc la doc générale des plugins).

      Pour être sûr de bien surcharger Zpip et Zpip-vide, le fichier plugin.xml de votre thème contiendra :

      <necessite id="Z" />
      <necessite id="zvide" />

      Étape 1 : définir la liste des blocs pour Zpip

      Dans un fichier d’options, vous allez définir la globale z_blocs en lui indiquant tous les blocs existants (ne pas oublier le head) :

      $GLOBALS['z_blocs'] = array('contenu','head','navigation','col2','col3');

      Étape 2 : définir la structure des pages dans le fichier body.html

      Créer un fichier body.html à la racine du thème. Ce fichier va permettre d’appeler les différents blocs et de définir la structure HTML des pages. Ce fichier sera à adapter selon vos besoins. Mais grosso modo, il sera à peu près comme ça :

      <div id="page">
      	<div id="entete">
      		<INCLURE{fond=inclure/entete,env}>
      	</div>
      	<div id="nav">
      		<INCLURE{fond=inclure/barre-nav,env}>
      	</div>
      	
      	<div id="conteneur">
      		[(#ENV{composition}|=={sommaire}|non)
      		<div id="contenu">
      			<INCLURE{fond=contenu/#ENV{type},env}>
      		</div>
      		]
      		
      		[(#ENV{composition}|=={sommaire}|oui)
      		<div id="col1">
      			<INCLURE{fond=contenu/#ENV{type},env}>
      		</div>
      		<div id="col2">
      			<INCLURE{fond=col2/#ENV{type},env}>
      		</div>
      		<div id="col3">
      			<INCLURE{fond=col3/#ENV{type},env}>
      		</div>
      		]
      		
      		[(#ENV{composition}|=={nav}|oui)
      		<div id="navigation">
      			<INCLURE{fond=navigation/#ENV{type},env}>
      		</div>
      		]
      	</div>
      
      	<div id="pied">
      		<INCLURE{fond=inclure/pied,env}>
      	</div>
      </div>

      On inclue les blocs navigation, col2 et col3 de manière conditionnelle.

      Étape 3 : fournir un contenu par défaut pour les deux nouveaux blocs col2 et col3

      Zpip a besoin d’un contenu par défaut de base pour chaque bloc. Dans le cas présent, il va s’agir d’un squelette vide puisque les contenus seront ajoutés ensuite via le noiZetier. Il vous faut donc créer dans votre plugin deux sous-répertoires : col2 et col3. dans chacun d’eux, créer un fichier dist.html (c’est un squelette par défaut) ne contenant rien.

      Étape 4 : indiquer au noiZetier les blocs des différentes pages

      Pages normales

      Tout d’abord, il faut indiquer au noiZetier que les blocs par défaut pour les différentes pages ne sont que le bloc contenu. Cela se fait via le pipeline noizetier_blocs_defaut (voir Fonctionnement par défaut du noiZetier). Par défaut, le noiZetier prévoit trois blocs par défaut : contenu, navigation et extra. On va donc lui indiquer de ne garder que contenu.

      Je pars du principe que le préfixe de votre plugin Thème est theme. Dans le fichier plugin.xml de votre thème, il faut donc ajouter :

      	<pipeline>
      		<nom>noizetier_blocs_defaut</nom>
      		<inclure>theme_pipelines.php</inclure>
      	</pipeline>

      Ensuite, vous devez créer le fichier theme_pipelines.php à la racine du thème et y mettre le code suivant :

      <?php
      
      function theme_noizetier_blocs_defaut($blocs) {
      	unset($blocs['navigation']);
      	unset($blocs['extra']);
      	return $blocs;
      }
      
      ?>

      On a ainsi supprimé navigation et extra des blocs par défaut (il ne reste donc que contenu.

      Page sommaire

      Pour la page sommaire, on va lister les blocs spécifiques de cette page via sa déclaration XML (voir Fonctionnement par défaut du noiZetier).

      On va donc surcharger le fichier contenu/page-sommaire.xml de Zpip-vide. Donc, dans le sous-répertoire contenu de votre thème, vous allez créer un fichier page-sommaire.xml contenant :

      <page>
      	<nom><:zvide:nom_page-sommaire:></nom>
      	<icon>img/page_sommaire.png</icon>
      	<bloc id="contenu" nom="theme:col1" icon="img/fichier.png" />
      	<bloc id="col2" nom="theme:col2" icon="img/fichier.png" />
      	<bloc id="col3" nom="theme:col3" icon="img/fichier.png" />
      </page>

      A vous d’adapter les icônes (vous devez fournir un chemin relatif), ou supprimer l’attribut icon.

      Pour le nom des blocs, vous devez définir un fichier de langue dans votre thème afin de spécifier col1, col2 et col3. Vous remarquerez à ce niveau qu’on en profite pour renommer le bloc contenu en ’Colonne 1’ via une chaine de langue dans l’interface du noiZetier pour une meilleure expérience utilisateur. Techniquement, ce sera toujours le sous-répertoire contenu qui sera utilisé.

      Vous pouvez ajouter une description aux blocs avec l’attribut description qui attend lui aussi une chaine de langue.

      Compositions nav

      Ces compositions ayant une structure différente, elles devront être définies en dur par le thème. On va d’abord s’occuper des articles. Dans le sous-répertoire contenu, créez un fichier vide nommé article-nav.html. Le fichier est vide car il sera rempli ensuite de nosiettes. Mais il doit être présent pour être détecté par le noiZetier et Compositions. Cependant, pour être considéré comme une composition, il faut lui associer un fichier de description au format XML. Vous devez donc créer le fichier article-nav.xml dans le même sous-répertoire et contenant :

      <composition>
      	<nom><:theme:compo-nav:></nom>
      	<description><:theme:description-compo-nav:></description>
      	<icon>images/objet-simple.png</icon>
      	<bloc id="contenu" nom="noizetier:nom_bloc_contenu" description="noizetier:description_bloc_contenu" icon="img/ic_bloc_contenu.png" />
      	<bloc id="navigation" nom="noizetier:nom_bloc_navigation" description="noizetier:description_bloc_navigation" icon="img/ic_bloc_navigation.png" />
      </composition>

      La composition sera ainsi définie avec les blocs adéquats. N’oubliez pas de définir les chaines de langue adéquates et de personnaliser au besoin les icônes.

      Pour les rubriques, on procédera de la même manière en créant deux fichiers identiques dans le sous-répertoire contenu et nommés rubrique-nav.html et rubrique-nav.xml. Vous pouvez étendre à d’autres objets SPIP de la même manière en fonction de vos besoins.

      Étape 5 : désactiver la page par défaut de Zpip-vide

      Zpip-vide dispose d’une page nommée page par défaut permettant d’ajouter des contenus sur toutes les pages (voir Organisation des blocs et des pages dans Zpip-vide). Dans le cas présent, il semble que cette page par défaut soit inutile. Pour la désactiver, créez un fichier vide nommé defaut.xml dans le sous-répertoire contenu.

      Si vous préférez la conserver, adapter alors le code du fichier contenu/defaut.xml de Zpip-vide en fonction de vos besoins.

      En espérant avoir répondu à votre question.

      Bien cordialement

    Répondre à ce message

  • Bonjour Chers Collègues Spipiens,

    Je tente un exercice d’incitation à s’intéresser à certaines réalisations de la concurrence pour inspiration. je présente donc deux réalisations de l’univers Drupal qui mon séduit et dont on souhaiterais qu’elles puissent être réalisées avec SPIP, par exemple avec ZPIP.

    OpenPublic

    Le premier est une application Drupal complète comprenant tous les modules (plugin chez SPIP) et le thème. Je vous invite à visiter la démo. Le paquet complet est téléchargeable ici :

    • OpenPublic  : OpenPublic is an open source content management system based on Drupal and tailored for building websites for government

    Remarquer la navigation secondaire sous la forme d’un très beau slider d’images.

    Template Marinelli

    Marinelli est un élégant template Drupal qui exploite un panneau en haut de page qui s’ouvre au clic (slider) ainsi qu’un menu horizontal qui ouvre des panneaux de liens. Sous le menu horizontal un beau slider d’images joue le rôle de bandeau du site.

    Quelqu’un peut-il commenter ces réalisations en vue d’une réalisation à la SPIP ?

    Bien cordialement

    FDG

    Répondre à ce message

  • 4

    Bonjour ;

    quelque précisions sur la création «  »Compositions du noiZetier« »

    J’ai donc voulu créer une page reprenant certain sites

    -  dans la configuration « »Sites de la rubrique ou tous les sites« »

    si je sélectionne : « »tous les sites web« » ou dans la « »même rubrique« » ainsi que « »dans une rubrique spécifique"

    rien ne change au niveau de l’affichage ;

    tous les sites référencés de mon site apparaissent

    qu’ai je donc omis de configurer pour pouvoir choisir une rubrique spécifique ou sous-rubrique de préférence

    merci

    • J’ai besoin de quelques précisions. Si je comprends bien, la noisette Sites de la rubrique ou tous les sites a été incluse dans une composition du noizetier. Est-ce une composition de type rubrique ou de type page ?

      Ensuite, concernant l’option rubrique spécifique de la noisette : normalement un sélecteur de rubrique apparait pour sélectionner la rubrique spécifique. Est-ce que la rubrique spécifique a bien été sélectionnée ?

      Concernant le cas même rubrique et s’il s’agit d’une composition de type page, il importe de passer un id_rubrique dans l’URL.

      Cordialement

    • du type page

      justement pas de selecteur rubrique

    • Si tu choisis même rubrique en transmettant un id_rubrique dans l’url, est-ce que la noisette fonctionne correctement ?

      Ensuite, concernant le sélecteur de rubrique pour rubrique spécifique, utilises-tu les dernière version d’Aveline, de saisies et de Bonux ? Dans quel navigateur ? C’est peut-être un problème de javascript puisque le sélecteur ne s’affiche qu’une fois rubrique spécifique sélectionné, apparait alors le texte Si rubrique spécifique, quelle rubrique ? et un lien Modifier sur lequel il faut cliquer pour qu’apparaisse la liste des rubriques. De mon côté, ca fonctionne sans problème avec Firefox sous Windows et IE8.

      Cordialement

    • Bonjour,

      J’ai eu un problème similaire.

      Je l’ai résolu en mettant à jour les plugins yaml, saisies, noizetier et aveline, puis en vidant le cache.

      En espérant que ça serve...

    Répondre à ce message

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