Ajouter des pages Z et des noisettes à un plugin créant un nouvel objet éditorial

, par Joseph

Cet article vise à décrire comment il serait possible, dans un plugin créant un nouvel objet éditorial, de fournir un contenu de base compatible Zpip-dist et des noisettes pour ce nouvel objet.

L’exemple retenu ici est le plugin Agenda qui créé un nouvel objet éditorial : les évènements. Voici comment pourraient être proposées des pages Z et des noisettes permettant de fournir les contenus à Zpip-dist tout en étant compatibles avec Zpip-vide.

Dans cet exemple, nous aborderons uniquement la question de la création d’une page evenement, d’une page agenda et des noisettes permettant de créer ces pages et de lister les évènements.

Lister des noisettes à prévoir

Il y a tout d’abord des noisettes spécifiques pour la page evenement et permettant d’afficher les éléments spécifiques à un évènement, à savoir les noisettes suivantes :

  • evenement-filariane qui fournit le fil d’ariane de l’évènement.
  • evenement-contenuprincipal qui contiendra le contenu principal de l’évènement (titre, lieu, horaires, description, répétitions...)
  • evenement-formulaireparticipation qui fournira le formulaire de participation à un évènement.
  • evenement-mots_cles listant les mots-clés associés à un évènement.

Il faut prévoir également des noisettes permettant de lister les évènements (avec un système de navigation permettant de voir les évènements à venir ou les évènements passés ou tous les évènements par date croissante ou tous les évènements par date décroissante).

Avec un peu d’ingéniosité, il est possible de faire une seule noisette liste_evenements permettant, via un paramètre, de choisir si l’on souhaite afficher :

  • tous les évènements du site
  • les évènements situés dans le même secteur
  • les évènement situés dans la même rubrique
  • les évènements situés dans le même article

Ainsi, cette noisette pourra être utilisée en différents endroits du site en fonction des besoins.

De la même manière, il faut prévoir une noisette mini_calendrier permettant d’afficher le mini-calendrier en différents endroits du site, avec les mêmes paramètres de sélection des évènements à afficher.

Note : pour les paramètres possibles, s’inspirer des noisettes du projet Aveline.

Enfin, on doit pouvoir rechercher parmi les évènements et lister les évènements associés à un mot-clé. Il faut donc aussi prévoir les noisettes suivantes :

  • mot-evenements qui listera les évènements associés à un mot-clé
  • page-recherche-evenements qui listera les évènements trouvés par une recherche donnée.

En dernier ressort, prévoir un fil d’ariane pour la page agenda, soit une noisette agenda-filariane.

Créer la page evenement

Il s’agit de fournir un contenu par défaut pour la page associée à un évènement. Ce contenu de base, pour être cohérent avec Zpip-dist, doit afficher dans le bloc contenu le fil d’ariane, le contenu principal de l’évènement et le formulaire de participation. Dans le bloc extra seront affichés les mots-clés associés à cet évènement.

Afin d’éviter de dupliquer le code, il est tout à fait possible d’utiliser les noisettes via une inclusion classique (ceci fonctionnant même en l’absence du noiZetier).

Ainsi, le fichier contenu/evenement.html contiendra :

  1. <INCLURE{fond=noisettes/evenement-filariane.html, id_evenement, params par défaut de la noisette}>
  2. <INCLURE{fond=noisettes/evenement-contenuprincipal.html, id_evenement, params par défaut de la noisette}>
  3. <INCLURE{fond=noisettes/evenement-formulaireparticipation.html, id_evenement, params par défaut de la noisette}>

Télécharger

et le fichier extra/evenement.html contiendra :

  1. <INCLURE{fond=noisettes/evenement-mots_cles.html, id_evenement, params par défaut de la noisette}>

Par ailleurs, pour fonctionner correctement [1], il faut également prévoir un fichier evenement.html à la racine du plugin et contenant :

  1. <INCLURE{fond=structure}{env}{type=evenement} />

Rendre les pages créées compatibles avec Zpip-vide

Dans la logique de Zpip-vide, les contenus de la page sont gérés à l’aide du noiZetier sous forme de noisettes. Il faut donc que le contenu de base de la page evenement soit vide dans ce cadre là.

Il suffit alors d’une toute petite modification à apporter à contenu/evenement.html et à extra/evenement.html en testant la présence ou non de Zpip-vide.

Ainsi, contenu/evenement.html devient :

  1. [(#PLUGIN{zvide}|non)
  2. <INCLURE{fond=noisettes/evenement-filariane.html, id_evenement, params par défaut de la noisette}>
  3. <INCLURE{fond=noisettes/evenement-contenuprincipal.html, id_evenement, params par défaut de la noisette}>
  4. <INCLURE{fond=noisettes/evenement-formulaireparticipation.html, id_evenement, params par défaut de la noisette}>
  5. ]

Télécharger

et extra/evenement.html :

  1. [(#PLUGIN{zvide}|non)
  2. <INCLURE{fond=noisettes/minicalendrier.html, params par défaut de la noisette}>
  3. <INCLURE{fond=noisettes/evenement-mots_cles.html, id_evenement, params par défaut de la noisette}>
  4. ]

Télécharger

Il ne faudrait pas oublier la page agenda listant l’ensemble des évènements du site (avec un mini-calendrier dans la colonne extra).

On fera donc le fichier contenu/agenda.html

  1. [(#PLUGIN{zvide}|non)
  2. <INCLURE{fond=noisettes/agenda-filariane.html, params par défaut de la noisette}>
  3. <INCLURE{fond=noisettes/liste_evenements.html, params par défaut de la noisette}>
  4. ]

Télécharger

et extra/agenda.html :

  1. [(#PLUGIN{zvide}|non)
  2. <INCLURE{fond=noisettes/minicalendrier.html, params par défaut de la noisette}>
  3. ]

Télécharger

Déclarer la page evenement au noiZetier

Afin que la page evenement soit correctement prise en compte par le noiZetier avec son icône, son titre et sa description, on créera un fichier contenu/evenement.xml contenant :

  1. <page>
  2. <nom><:agenda:nom_page_evenement:></nom>
  3. <description><:agenda:description_page_evenement:></description>
  4. <icon>img_pack/agenda-24.png</icon>
  5. </page>

Télécharger

De même, il faut prévoir un fichier contenu/agenda.xml :

  1. <page>
  2. <nom><:agenda:nom_page_agenda:></nom>
  3. <description><:agenda:description_page_agenda:></description>
  4. <icon>img_pack/agenda-24.png</icon>
  5. </page>

Télécharger

Note : on pensera à créer également les quatre chaînes de langue correspondantes.

Résultat obtenu dans 3 contextes différents

1. avec Zpip-dist seul

On disposera d’une page evenementet d’une page agenda avec un contenu par défaut. Charge au webmaster du site de rajouter un lien vers la page agenda à l’aide du plugin Menus.

Par contre, les évènements de la rubrique ou de l’article ne seront pas affichés sur les pages correspondantes, ni les évènements associés sur une page mot-clé ou les évènements sur la page de recherche.

Le webmaster pourra soit surcharger les fichiers de Zpip-dist pour faire ses propres personnalisations ou bien utiliser le noiZetier (voir ci-après).

2. avec Zpip-dist et le noiZetier

On obtient les mêmes contenus par défaut que dans le cas précédent, mais on dispose de noisettes pouvant être ajoutées sur la page d’accueil, la page d’un article ou encore les résultats d’une recherche.

On pourra ainsi compléter, au choix, les contenus par défaut fournis avec les noisettes disponibles.

3. avec Zpip-vide et le noiZetier

Les contenus par défaut sont vides (logique de Zpip-vide) et les noisettes de contenu correspondantes sont maintenant visibles dans le noiZetier.

L’utilisateur peut alors librement remplir ces pages avec les noisettes de son choix.

Améliorer encore un peu les choses

Il est possible de fournir deux fichiers de configuration du noiZetier proposant deux configurations de noisettes :

  • la première pour Zpip-dist et ajoutant les listes d’évènements sur les pages articles, mot-clés et résultats de la recherche ;
  • une seconde pour Zpip-vide proposant également un contenu par défaut pour les pages évènements et agenda, modifiable ensuite au choix de l’utilisateur.

P.-S.

Au final, il est ainsi possible de proposer des noisettes et des contenus par défaut utilisables à la fois directement avec Zpip-dist (avec et sans noiZetier) et en même temps compatibles avec Aveline.

Cela permet de répondre à trois types d’utilisation :

  • des contenus définis uniquement via les squelettes, sans personnalisation dans l’espace privé ;
  • des contenus par défaut fixes et non débrayables avec des possibilités d’ajout via le noiZetier ;
  • des pages entièrement construites à partir de noisettes et personnalisables à souhait, dans la logique d’Aveline.

Notes

[1À vérifier si cela sera toujours nécessaire avec Zpip-core