Le plugin noiZetier version 1

Le noiZetier offre une interface d’administration permettant d’insérer au choix des éléments modulaires de squelettes (noisettes) et de les ajouter ainsi à ses squelettes.

Principe général du noiZetier

Le noiZetier fournit une interface dans l’espace privé permettant de choisir, pour chaque page, des noisettes à ajouter aux blocs contenu, navigation et extra [1] de chaque page. Les noisettes viennent ainsi compléter les contenus par défaut prévus par le squelette.

Ces noisettes sont déclarées dans un sous-répertoire noisettes/. Elles peuvent être fournies par un plugin, un squelette ou être placées dans le répertoire squelettes du site.

Le noiZetier est nativement fonctionnel avec le squelette Zpip-dist et les squelettes basés sur ce dernier. Il peut être utilisé avec d’autres squelettes si ces derniers le prévoient (voir Adapter un squelette pour être compatible avec le noiZetier).

Pour gérer l’ensemble des contenus du site sous formes de noisettes voir Aveline v1 : collection de noisettes Z.

Installation et dépendances

Le plugin noiZetier s’installe comme tous les autres plugins (voir la doc en ligne). Pour fonctionner, il nécessite SPIP en version 2.1 minimum et le plugin SPIP Bonux.

À partir de la version 0.8 du noiZetier, les plugins Saisies, YAML, Vérifier sont nécessaires au fonctionnement du noiZetier.

À partir le version 0.9, le plugin jQuery UI pour SPIP est également requis. Il permet le drag n drop pour définir l’ordre des noisettes.

Le noiZetier est développé sur SPIP-Zone. De fait, vous pouvez le récupérer via SVN ou bien télécharger la dernière version sous forme de fichier Zip.

Le plugin Compositions n’est pas indispensable mais est fortement recommandé.

-  Le plugin Saisies permet de rendre les formulaires de configuration des noisettes plus ergonomiques (adaptation du type de saisie pour chaque paramètre).

-  Le plugin Vérifier est utilisé pour vérifier la valeur des entrées saisies au besoin.

-  Le plugin YAML permet d’exporter et d’importer une configuration particulière du noiZetier mais également de pouvoir profiter de noisettes complexes décrites par un fichier YAML au lieu d’un fichier XML (voir Déclarer des noisettes au noiZetier).

-  Enfin, le plugin Compositions permet de configurer des compositions du noiZetier.

Ajouter des noisettes à un bloc

Par défaut, seuls les webmasters du site ont les droits suffisants pour configurer le noiZetier.

Une fois le plugin installé, l’accès au noiZetier se fait via le menu Configuration.

Ce bouton vous emmène sur la page principale du noiZetier. Cette dernière liste les pages de votre site web pouvant recevoir des noisettes. Pour chacune, un lien Configurer les noisettes de cette page vous permet d’accéder à la gestion des noisettes de cette page.

Si les plugins YAML et/ou Compositions sont activés, des options supplémentaires sont disponibles en haut à gauche.

Les différents blocs de la page sont présentés les uns au-dessous des autres.

Pour ajouter une noisette, cliquez sur le bouton Ajouter une noisette et choisissez une noisette parmi celles disponibles.

Renseignez les différents paramètres de la noisette et valider.

Les différentes noisettes configurées pour un bloc apparaissent dans leur ordre d’inclusion avec leurs paramètres.

Pour modifier les paramètres d’une noisette, supprimer une noisette ou modifier l’ordre d’inclusion des noisettes, passer la souris sur le nom de la noisette pour faire apparaître les boutons de modification.

Pour aller plus loin

Notes

[1Il s’agit des blocs par défaut lors d’une utilisation conjointe avec Zpip. Le nombre et les noms des blocs peuvent différer selon le squelette.

Discussion

10 discussions

  • 1

    Attention, sur le site plugins.spip.fr, dans l’article concernant ce plugin, le lien vers la doc pour a version compatible spip 3.0 est cassé :

    http://plugins.spip.net/noizetier.html

    Répondre à ce message

  • 6
    ChateauDav

    Est-ce qu’une version pour spip 3 est prévue ?

    • une vesion est en cours de développement mais pas encore fonctionnelle. Au programme :

      • prise en compte du nouveau formalisme de Zpip
      • scripts de mise à jour
      • mise en place d’une nouvelle interface
      • nouvelles icônes

      Encore un peu de patience, Zpip-vide et Aveline étant également en développement pour Spip 3

    • ChateauDav

      Super ! Je suivrai ça de près ;-)
      Merci.

    • Stéphane Santon

      Bonjour,
      Des versions testables du Noizetier et Aveline pour Spip3 ?
      Merci

    • Encore un peu de patience. Attention : les versions sur SVN ne sont pas fonctionnelles.

      Je n’ai pas eu d’accès internet pendant un mois et demi => le chantier a pris du retard.

      Plusieurs dépendances ont été portées sur SPIP 3. Il faut encore prendre en compte les changements de structure Z et les scripts de mise à jour. L’interface va être entièrement refaite afin d’être, espérons-le, plus claire et fonctionnelle. Et, si tout va bien, ajout d’un var_mode=noisettes pour modifier la configuration des noisettes directement depuis l’espace public !!

      Encore un ou deux mois...

    • Bonjour, sans vouloir vous presser, ou en sont les dev pour une version compatible avec spip 3 ?

      est-ce qu’il y a une version beta ?

      bon courage

    • Une version pour SPIP 3 (en cours de test et pouvant comporter des erreurs) est disponible uniquement via SVN sur SPIP Zone.

      Bien cordialement

    Répondre à ce message

  • 1
    feeling03

    impossible de télécharger le fichier ZIP

    Répondre à ce message

  • 1

    Salut Joseph, merci pour ce super plugin.

    Il y a je crois une petite coquille dans la dernière révision : une parenthèse en trop dans le necessite id=« SPIP » du plugin.xml qui génère une impossibilité d’activation.
    Rien de bien grave ;-)

    ++ P.

    • Il y a vait un crochet en trop. C’est corrigé.

      On a maintenant <necessite id="SPIP" version="[2.1.0;3.0.0-dev)" /> : le noizetier ne peut donc être utilisé qu’avec SPIP 2.1. On l’invalide pour SPIP 3 en attendant de développer une version compatible.

    Répondre à ce message

  • 2

    Bonjour,

    J’utilise le noizetier pour la première fois couplé à Zpip vide, Aveline, Compositions et Menus.

    Cela permet,enfin, de régler le problème récurrent de liberté de publication par ressource sans faire de gymnastique à coup de tests dans les squelettes.

    Donc Bravo et Merci !

    Je rencontre un petit soucis lors de l’insertion d’un bloc vide :

    Par exemple, une noisette de liste des brèves de la rubrique sur la page rubrique.
    Si la rubrique ne contient pas de brèves, le noizetier génère quand même la div englobante :

    			<BOUCLE_noisettes(NOISETTES){bloc=#ENV{bloc}}{type=#ENV{type}}{composition=#ENV{composition}}{par rang}>
    
    				<div class="noisette noisette_#NOISETTE[ (#CSS)]">
    
    					#NOIZETIER_AFFICHER_NOISETTE
    
    				</div><!--.noisette_#NOISETTE-->
    
    			</BOUCLE_noisettes>

    La div .noisette est donc vide mais s’affiche quand même.

    J’ai vaguement essayé d’utiliser le test de spip sur la boucle, sans succès : toujours un div vide.

    		<B_noisettes>
    
    			<BOUCLE_noisettes(NOISETTES){bloc=#ENV{bloc}}{type=#ENV{type}}{composition=#ENV{composition}}{par rang}>
    
    				<div class="noisette noisette_#NOISETTE[ (#CSS)]">
    
    					#NOIZETIER_AFFICHER_NOISETTE
    
    				</div><!--.noisette_#NOISETTE-->
    
    			</BOUCLE_noisettes>
    
    		</B_noisettes>

    Je pourrais supprimer la div, tout simplement, mais cela oblige à reprendre l’ensemble des noisettes pour utiliser la classe CSS ...

    Une idée ?

    Merci d’avance.

    • J’ai trouvé la solution :

      			<BOUCLE_noisettes(NOISETTES){bloc=#ENV{bloc}}{type=#ENV{type}}{composition=#ENV{composition}}{par rang}>
      
      				[<div class="noisette noisette_#NOISETTE[ (#CSS)]">
      
      					(#NOIZETIER_AFFICHER_NOISETTE)
      
      				</div><!--.noisette_#NOISETTE-->]
      
      			</BOUCLE_noisettes>
    • Le noizetier a été mis à jour.

      Bien cordialement

    Répondre à ce message

  • 3

    Suite du message précédent sur le non affichage de l’icône : je précise que je peux quand même accéder au plugin avec ?exec=noizetier dans la barre d’adresse.

    C’est donc uniquement un problème d’affichage d’icône.

    Claude

    • Avez-vous vidé le répertoire local ?

      Je ne reproduis pas votre bug en SPIP 2.1.8, que le nouveau bando soit activé ou non.

      Avez-vous essayé de supprimer complètement le répertoire contenant le noiZetier sur votre serveur. Vidage complet des caches.

      Puis réinstallation au propre du plugin ?

      Cordialement

    • Note : utilisez-vous le nouveau Bandeau ? Si oui, dans une des précédentes versions, une petite erreur de code faisait que certaines icônes n’apparaissaient pas.

      Ce bug a été corrigée dans la version 1.1.8

      Cordialement

    • J’ai tout réinstallé, et l’icône s’affiche correctement maintenant. Merci.

    Répondre à ce message

  • Bonjour,

    L’icone « noizetier » n’apparait pas dans le menu Configuration, à côté de l’icone Gestion des Plugins. Donc impossible d’y accéder.
    Pas de problème apparemment avec d’autres plugins (avec Zen Garden par exemple, j’ai bien l’icône Thèmes affiché).

    Le plugin est bien dans la liste des plugins activés. J’ai vidé les caches, mis les droits des répertoires à 777. J’ai désinstallé, réinstallé à chaque manip le plugin : rien n’y fait.

    Je suis en Spip 2.1.8

    Quelqu’un aurait-il une idée ?

    Claude

    Répondre à ce message

  • 2

    Hello,
    Je vois passer quelques commentaires sur le noiZetier qui font écho à une difficulté que j’ai à avoir les idées claires sur le rôle respectif/complémentaire/redondant de compositions et noiZetier ...

    Le morcellement des choses est méchamment puissant, Zpip a initialisé le mouvement. Compositions a rajoutée une modularisation. Mais comment faut-il aborder noiZetier : que permet-il que ne fait pas (ou mal) compositions ?

    Perso, j’avoue quun p’tit éclairage, une petite explication ne me déplairait pas...

    Merci d’avance !

    • Bonjour,
      vaste question et je vais essayer de faire une petite synthèse. Cette dernière est probablement incomplète et il ne faut pas hésiter à compléter mon propos.

      Zpip, Composition, Noizetier, Aveline sont tous prévus pour interagir entre eux. Il est vrai que cela est parfois un peu compliqué de voir le rôle de chacun. Par ailleurs, pour Zpip, je distinguerai trois éléments : un mécanisme de génération des pages (qui est en train d’être formalisé sous la forme d’un plugin Zpip-core), une convention de nommage CSS et des contenus par défaut.

      Mécanisme de génération des pages Z

      Ce mécanisme est issu de la réflexion décrite par Cédric sur cette page : Modèle de squelette réutilisable.

      Grosso modo, chaque page du site est découpé en grands blocs de contenu (en-tête, contenu proprement dit, navigation, extra, pied de page...). D’un côté on définit le gabarit ou layout des pages, c’est-à-dire la manière dont ces blocs sont présentés dans la page, et de l’autre on défini les contenus HTML de la page proprement dit. Ainsi, le contenu d’une page article est défini par le squelette contenu/article.html.

      La liste des blocs peut changer d’un site à un autre, le mécanisme étant lui générique. Le mécanisme proposé permet de générer de plus très facilement des pages. En effet, on est pas obligé de définir tous les blocs d’une page, le système pouvant utiliser des blocs par défaut.

      Quoiqu’il en soit, on retiendra principalement le découpage des pages en grands blocs, un gabarit se chargeant d’assembler ces différents blocs.

      Zpip-dist et Thèmes Z

      Zpip-dist, en plus de ce découpage des pages en blocs, propose en même temps une liste par défaut des blocs (head, entete, pied, contenu, navigation, extra), un contenu pour ces différents blocs et une convention de nommage CSS des éléments HTML des ces contenus. Voir Conventions de nommage dans Zpip et Nommage des classes Z.

      Rien n’oblige à utiliser le contenu des blocs définis par Zpip-dist. On peut surcharger cela afin de produire ses propres contenus. Par contre, si on utilise le même découpage de blocs que Zpip-dist et si on utilise les mêmes nommages CSS Z, alors son squelette est compatible avec tous les

      thèmes

      pour Zpip. En effet, les thèmes reposent sur un certain découpage en blocs (puisque ce sont les thèmes qui fournissent le gabarit évoqué plus haut) et sur le nommage des classes Z.

      On voit bien que l’ensemble de la logique Zpip repose sur trois élements :

      • un mécanisme de génération des pages (impliquant une organisation physique particulière des squelettes) qui sera implémenter à terme dans Zpip-core.
      • un nommage de classes CSS Z et un découpage spécifique en 6 blocs, utilisés par l’ensemble des thèmes Z
      • et enfin des contenus par défaut pour les blocs fournis par le squelette Zpip-dist.

      Il est parfaitement possible d’utiliser que certains éléments. Ainsi, SPIP-Contrib utilise le mécanisme de génération des pages Z (Zpip-Core), mais définit sa propre liste de blocs et donc ses propres thèmes.

      Je peux faire un site avec mes propres contenus mais respectant les conventions de nommage Z. Dès lors j’utilise le mécanisme de génération des pages Z et les thèmes Z, mais avec des contenus pour les blocs différents de ceux de Zpip-dist.

      Les Compositions

      Pour une majorité de sites sous SPIP, on utilise un squelette pour chaque type d’objets. On a donc une page pour les articles, une page pour les rubriques, etc. Plus précisément, on a défini une “mise en page” pour présenter chaque type d’objet. Pour ceux qui travaillent sous OpenOffice, c’est un peu comme les styles de pages. On souhaite parfois une mise en page alternative pour certains objets spécifiques. Ainsi, je vais avoir ma mise en page générique pour les rubriques, mais je veux une mise en page alternative pour la rubrique 12. On cherche donc à faire des variantes.

      Cette problématique est ancienne sous SPIP. Un des premiers mécanismes mis en place est celle des variantes de squelettes décrites ici : http://www.spip.net/fr_article3445.html. Le problème de cette approche est qu’il faut connaître à l’avance les identifiants des rubriques, articles, etc. concernés. Et donc ce n’est pas facilement paramétrable via l’espace privé.

      Une autre solution qui a été beaucoup utilisée est de sélectionner le squelette d’un objet en fonction d’un mot-clé. Voir Choix des squelettes par mot clef. mais il s’agit d’un détournement de l’usage des mots-clés, introduisant d’un côté des mots-clés sémantiques et de l’autre des mots-clés techniques. Il y a eu de nombreux débats à ce sujet et des pistes d’alternatives explorées puis abandonnées comme Le Plugin Attributs (abandonné).

      De là est né le plugin Compositions qui permet de sélectionner dans l’espace privé des variantes de mise en page sans avoir à détourner les mots-clés. Les compositions sont dons ces variantes de présentation. Il manque aujourd’hui au plugin compositions la possibilité d’appliquer une variante à toute une branche, par exemple appliquer une composition d’articles à tous les articles d’une rubrique. Plusieurs pistes sont en cours et la discussion revient régulièrement sur SPIP-Zone.

      Les mécanismes Z sont parfaitement compatibles avec Compositions. Dans le contexte Z, une composition est donc un contenu alternatif pour les blocs. Surtout, il devient possible de définir une composition en ne modifiant qu’un seul bloc. Ainsi, si je fais un squelette contenu/rubrique-perso.html, je crée une variante/composition (nommée perso) pour les rubriques en fournissant un contenu alternatif pour le bloc contenu (je sais, le mot contenu est ici utilisé dans deux sens différents). Le mécanisme de création des pages Z fait que si on n’a pas spécifié de contenu alternatif pour la composition perso pour les blocs extra et navigation, alors on utilisera les contenu de la page rubrique par défaut.

      On retiendra surtout le concept clés des compositions : il s’agit de variantes de présentation.

      Dans le contexte Z + Compositions, une page a dès lors un type et une composition. Le type correspond à l’objet visé (rubrique, article...) et compositions est le nom de la composition qui s’applique à cet objet donné (article 12, rubrique 4...), composition étant vide pour la mise en forme par défaut.

      Le noiZetier

      Après les gabarits, les blocs et les variantes, le noiZetier introduit le concept de noisettes. Le mots noisettes a été utilisé dans des sens parfois bien différents dans le milieu SPIP. Dans le cadre bien précis du noizetier, une noisette est un morceau de contenu. Et dans le cadre du noiztier utilisé en contexte Z, une noisette vient se placer dans un bloc.

      LenoiZetier peut être utilisé dans différents contexte. Dans un cadre Z, les noisettes du noiZetier viennent s’ajouter à la fin d’un bloc. Ce sont donc des morceaux de contenus que l’on ajoute à la fin du contenu défini par le squelette.

      Dans l’interface du noiZetier, on indique donc sur quelle page on veut ajouter une noisette et dans quel bloc. On peut ajouter plusieurs noisettes au bloc d’une page, et le noizetier permet bien sur de choisir dans quel ordre. Par ailleurs, les noisettes peuvent recevoir des paramètres et c’est là un de leur grand atout.

      Le noiZetier est également compatible avec les compositions. Ainsi on pourra ajouter la noisette A sur la variante V des rubriques, alors qu’on préfère ajouter la noisette B sur la variante W. Ne pas oublier qu’une page c’est type+composition.

      En définitive, quand on utilise noiZetier+Zpip, les noisettes sont des morceaux de contenus que l’on ajoute à la fin des blocs d’une page.

      Aveline

      Le projet Aveline pousse un peu plus loin le bouchon puisque dans le cadre d’Aveline, tous les contenus des blocs sont définis sous formes de noisettes, le tout étant défini et paramétré dans l’interface privé.

      Aveline utilise le mécanisme Z et la convention de nommage Z afin d’être compatible avec les thèmes pour Z.

      Autrement dit, dans le contexte d’Aveline, une page a un gabarit et un design CSS défini par le thème, elle est découpée en blocs (contenu, extra et navigation + en-tête et pied de page) et le contenu des blocs est composé de noisettes.

      Aveline est compatible avec les compositions, celles-ci restant toujours la même chose : des variantes de présentation. Et avec Aveline, une composition est donc simplement une autre liste de noisettes. Mais, dans la mesure où le contenu des pages est géré via l’interface privée, il devient possible de créer des compositions directement depuis l’interface privé. Ce que j’ai appellé les compositions du noiZetier (voir Les compositions du noiZetier) qui prennent tout leur sens dans le cadre d’Aveline.

      Pour l’utilisateur, c’est toujours la même chose : des variantes de présentation. La différence n’est que technique au sens où ces compositions sont définies en base de données et non sous formes de squelettes HTML.

      Voilà, j’espère avoir réussi à clarifier un peu les choses.

      Bien cordialement

    • Eh bien dis donc, pour de la clarification, c’est de la clarification ça !

      Merci donc d’avoir pris le temps de rédiger ce (long) texte. Il me semble qu’il mérite de figurer quelque part (en avant-propos ?) dans la doc ou qu’un lien soit présent depuis l’article de présentation du plugin parce que je pense qu’il constitue un document vraiment utile et qui intéressera surement pas mal de monde.

    Répondre à ce message

  • 1

    Bonjour,

    Pouvez-vous indiquer un ou des sites exemples SVP.

    Cordialement

    FDG

    Répondre à ce message

  • 1

    Ce plugin est très impressionnant mais ne semble pas marcher lorsque l’on change le préfixe des tables.

    Bravo pour le travail accompli.

    • Boujour,
      pourriez-vous préciser le problème rencontré, les messages d’erreurs affichés ? Quelle version de SPIP ? Quels plugins et squelettes affichés ?

      Bien cordialement

    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