Les compositions du noiZetier

Cette page décrit comment réaliser des variantes de compositions directement à partir du noiZetier.

Pré-requis

Le plugin Compositions (version 1.0.1 minimum) doit être installé et activé sur votre site. Nous supposons que vous avez déjà lu la documentation du plugin Compositions.

Différence entre une composition classique et une composition du noiZetier

En l’absence du noiZetier, le plugin Compositions permet de choisir entre plusieurs squelettes de contenu correspondant à différentes variantes. Ainsi, par exemple dans le cas de Zpip, on aura un squelette contenu/article.html correspondant au contenu par défaut et un squelette contenu/article-agenda.html [1] définissant un contenu différent pour les articles gérant un agenda. L’application d’une composition à un article est gérée dans l’espace privé par le plugin Compositions.

Ces compositions « classiques » sont automatiquement détectées par le noiZetier et sont configurables comme n’importe quelle autre page.

Le noiZetier offre également la possibilité de créer des compositions « virtuelles » ou « compositions du noiZetier ». Il s’agit de compositions qui ne diffèrent QUE par les noisettes ajoutées aux différents contenus. Dans ce cas, c’est le même contenu de base qui sera affiché, seules différeront les noisettes qui seront ajoutées à ce contenu de base.

Créer, modifier et supprimer une composition du noiZetier

Si le plugin Compositions est activé, une icône Gérer les compositions du noiZetier sera visible en haut à gauche de la page principale du noiZetier.

Sur la page de configuration des compositions du Noizetier, cliquez sur Créer une nouvelle composition.

Vous devez préciser sur quel objet porte cette composition, lui donner un identifiant unique, puis préciser un titre et un descriptif qui seront utilisés pour décrire composition à vos rédacteurs.

Optionnellement, vous pouvez préciser le chemin relatif d’une image à utiliser comme icône. Vous pouvez consulter la page http://monsite.ext/spip.php?page=icones_preview pour visualiser une partie des images disponibles sur votre site.

Une fois enregistrée, la composition apparaîtra dans la liste des pages du noiZetier et pourra être configurée comme n’importe quelle autre page.

À retenir : à sa création, une composition du noiZetier reçoit la configuration de noisettes de sa page parente qu’il ne vous restera plus qu’à modifier pour correspondre à ce que vous recherchez.

Enfin, pour appliquer cette composition à un article, on procédera comme n’importe quel autre composition, sur la page de l’article en question.

Notes

[1Auquel il faut ajouter un fichier de description article-agenda.xml.

Discussion

8 discussions

  • 2

    composition 3.5.5 - stable
    SPIP 3.1.0 [22707]

    Bonjour,
    Je crée une « page composition du noizetier » avec comme identifiant : nawak, je mets des noisettes dessus...
    lorsque je vais sur le site public avec comme url : site/spip.php ?page=nawak j obtiens la page 404 avec un message de debug : Aucun squelette nawak.html n’est disponible...
    C est plus comme ca qu on fait ?
    Si je crée un couple de fichier nawak.html et nawak.xml cela fonctionne normalement par contre...
    Une idée, ca ne le fait que chez moi, peut etre ai je modifié un truc ?
    amicalement
    triton

    • Avec le noizetier et zpip-vide ?

      La composition est bien du type page ?

      Le cache a bien été vidé ?

    • type page !
      c’tte quiche...
      il fallait bien évidement indiquer le type « page », ce qui est totalement normal, logique et irréfutable
      merci bien, tout fonctionne normalement donc
      amicalement
      triton

    Répondre à ce message

  • 1

    Suppression de pages du Noizetier :
    Bonjour ,

    j’ai fait des essais et donc dupliqué des pages, créé des pages nouvelles qui sont inutiles : je ne trouve pas la commande simple pour les supprimer (à priori sous /ecrire/ ?exec=noizetier_pages)
    Pourriez-vous SVP expliquer ? Merci.

    • Lorsqu’on édite une composition créée avec le noizetier (via exec=noizetier_page), tout en bas à droite, à côté de l’icône Dupliquer cette page il y a une icône Supprimer cette page. Attention, cela n’est valable que pour les compositions créées avec le noiZetier.

    Répondre à ce message

  • 4

    Bonjour,

    est-ce possible de créer une composition qui présenterait un groupe de mots clés (sous forme de liste comme les rubriques une liste d’articles) appelé depuis une page par groupemotNN simplement ?

    Merci d’avance.

    • Pas en l’état.

      Il faudrait en premier lieu vérifier comment le plugin Compositions gère les groupes de mots-clés et si les compositions (hors noizetier) fonctionne correctement pour les groupes de mots-clés.

      Ensuite, il faudrait mettre à jour le noiZetier et Zpip-vide en conséquence.

    • Merci Joseph,
      Est-ce possible d’expliquer & détailler SVP les manipulations de vérifications énoncés ?

    • OK, j’ai trouvé le souci. Il manquait juste un tout petit élément dans le formulaire de création de nouvelle compo du noizetier.

      Ca devrait être réglé à partir de la version 2.4.2

      Merci de confirmer si ca fonctionne bien.

      Cdlt

    • Bonjour,

      j’ai installé la 2.4.2, et sous la commande du menu Squelettes >Compositions , il n’y a plus de bouton de commandes : voir copie d’écran . Je ne comprends du coup pas à quoi cela sert ou il y a une erreur.
      Merci

    Répondre à ce message

  • 5

    Bonjour,

    Je voudrais découvrir s’il est possible d’utiliser le processus de Compositions,
    au sein de squelettes Z, pour definir des contenus de blocs ’dist’,
    spécifiques par « zones » (la zone étant définie comme étant, par exemple,
    tous les ecrans de contenu généré par un meme plugin.

    Voici un voeu pour 2014 !

    Alors Bloavez Mad..

    YannX

    • Euhhhhh je n’ai pas compris la question !!

    • Bonjour Joseph

      Je n’ai pas la pratique du plugin Composition ou du NoiZetier, mais j’utilise Z (actuellement Zpip).

      Mon objectif : quand j’utilise des ’contenu’ fournis par un plugin,
      pouvoir (dans ce plugin) définir des DIR_PLUGIN/EXTRA/dist et NAVIGATION/dist
      qui seraient utilisés par défaut pour toutes les pages du plugin

      (sans demander à l’utilisateur de se rajouter dans son squelettes/EXTRA/dist perso qq.chose comme :
      [(#PLUGINtoto|oui) #INCLUREfond=#DIR_PLUGIN/Extra/dist] //syntaxe approximative..

      Mon idée : m’appuyer sur le principe des compositions, en établissant qu’une page
      de contenu fourni par le plugin « établit » une composition du meme nom,
      et donc le chargement du EXTRA/dist appellerait automatiquement le PLUGIN/EXTRA/dist

      Pour permettre ensuite la surcharge par l’utilisateur final, peut-etre faudrait-il préférer
      alors le nommer : EXTRA/dist-plugin.html ?
      (en automatisant la prise en compte d’un plugin comme générant une nouvelle composition ?)
      (peut-etre faut-il déclarer dans le plugin un fichier de composition.xml ? comment le faire ?)

      Est-ce possible (ou bien manquerai-je encore trop de compréhension de ce système) ?
      Mon idée initiale était simplement de « forcer » (je ne sais comment : par pieline ?) la valeur
      du paramètre #ENVcomposition de Z à l’accès à la page de contenu dans le plugin,
      mais je n’en sais pas assez aujourd’hui pour savoir aller plus loin...

      Ou bien faut-il étudier une autre facon de faire ? mais vers où ?
      Est-ce une extension du principe actuel de Z/spipr irréalisable en l’état,
      ou bien faudrait-il imaginer un pipeline supplémentaire ?

      Toute suggestion serait bienvenue

      Merci de cet intéret.
      Cdlt

      YannX

      PS j’imagine que nombre de développeurs y verraient un intéret....
      mais il faudrait aussi que la surcharge dans ./squelettes/ soit toujours possible...

    • Pourquoi recréer la roue ?????

      Les pages de spip reposent sur des objets, déclarés ou non par des plugins.

      dist correspond aux blocs par défaut. Si tu as un plugin qui créé un objet toto, il peut fournir des squelettes par défaut pour l’objet toto, par exemple contentu/toto.html et extra/toto.html.

      S’il est déclaré via l’interface objets de SPIP 3, il doit même être possible d’y ajouter des compositions.

      Il faut bien distinguer plugins, objets et squelettes non associés à un objet. Les compositions ne sont que des variantes de squelette pour un objet donné.

    • Bonsoir Joseph,

      Merci de ta réponse, qui m’éclaire sur la non-possibilité !

      YannX

      PS ce n’etait pas « ré-inventer la roue » : simplement que je souhaitais profiter
      de blocs par défaut par « ensemble de pages » sur les 10 ou 15 écrans d’un meme plugin,
      portant en général sur un ou deux objets, sans devoir repenser à chaque fois, à chaque page de contenu, à recopier/dupliquer les blocs homonymes du contenu dans EXTRA (et NAVIGATION).....

    • euhhhh avec #INCLURE ?

    Répondre à ce message

  • 2

    Bonjour,

    J’avais posé la question sur la page du plugin Compositions discussion, mais apparemment, c’est plutôt ici que ça ce passe.

    Voici la question.

    À moins d’être passé à côté sans le voir, est-il possible de définir une classe CSS pour une composition comme on peut le faire avec les noisettes ?

    Je m’explique, actuellement, dans le squelette d’une composition, on a une classe CSS reprenant le nom de la composition.

    Mais, pour simplifier la maintenance CSS, j’aurais besoin de pouvoir utiliser une classe CSS plus générique et surtout manuelle.

    Exemple, j’ai 3 compositions :
    -  macompoalpha = liste d’articles de la rubrique 1.
    -  macompobravo = liste d’articles de la rubrique 2.
    -  macompocharlie = liste d’articles de la rubrique 3.

    Actuellement, si je veux définir un même style pour macompobravo et macompocharlie, je suis obligé de les mentionner dans mes CSS.

    Mais si demain, je veux rajouter une composition macompoecho = liste d’articles de la rubrique N. Je devrais rajouter la référence dans mes CSS.
    Ce que j’aimerais, c’est pouvoir au niveau de la noisette en plus de la classe « automatique » rajouter une classe par exemple ma-classe-liste-style1.
    Et ainsi, dans mes CSS, je ne fais plus référence ni à macompobravo, ni à macompocharlie, ni à macompoecho mais à ma-classe-liste-style1.
    Et ainsi je peux rajouter des noisettes avec un style déjà défini dans mes CSS sans avoir à les modifier mais juste en rajoutant la classe CSS directement dans l’interface de gestion des compositions.

    Mon but, est d’essayer d’avoir le minimum d’intéraction avec le code possible.
    Je suis le webmestre technique d’un site, et je travaille avec une autre personne qui est le webmestre éditorial du site.
    Actuellement, avec les besoins actuels, je suis arrivé à faire en sorte que l’autre personne soit presque totalement autonome. Tout se passe via l’interface privé de SPIP.
    Et à priori, pour l’instant, c’est la seule fonctionnalité manquante pour une totale autonomie de l’autre personne.

    • Bonjour,

      ce n’est actuellement pas possible. Il faudrait voir comment intégrer cela sans alourdir inutilement l’interface du noizetier qui doit être repensée par ailleurs dans le cadre du passage à spip 3 (malheureusement ce chantier n’a pas encore été entamée).

      Ajouter des CSS n’a de sens qu’à partir du moment où ces dernières sont définies dans le thème. Il faudrait dès lors trouver un mécanisme qui permettrait aux thèmes de signaler les CSS qu’il propose et de les proposer via un sélecteur approprié.

      Cela doit se penser dans une réflexion générale sur les évolutions du noiZetier. Néanmoins, je note votre demande dans un coin de ma tête mais je n’aurai pas le temps de m’y pencher avant plusieurs semaines. j’en suis désolé mais mon temps libre est fort limité en ce moment.

      Bien cordialement

    • Bonjour,

      Merci de votre réponse.

      Par contre, je ne comprends pas pourquoi vous dites que cela alourdirai inutilement l’interface.
      Car avec cette case en plus cela permet, à mon sens, d’alléger le travail du côté du développeur.
      Après, si c’est dans le sens, « si on rajoute ce champ alors pourquoi on en ajouterai pas d’autres et là l’interface devient inutilement lourde », c’est plus compréhensible.

      Mais même dans ce cas-là, je ne suis pas complètement d’accord avec vous.

      Je ne sais pas si vous l’avez déjà utilisé ou testé, mais je vais prendre pour exemple Drupal qui est utilisé dans un autre de nos projets, et pour lequel on nous a fait une pré-formation pour la saisie de contenus. Lors de cette formation, à part moi, il n’y avait que de « simples » utilisateurs (rédaction des contenus) et qui pour certains n’ont aucune connaissance informatique.
      Par exemple, lors de la démonstration de l’insertion d’un lien, on a plusieurs champs répartis en 3 onglets :
      -  onglet 1 : infos sur le lien
      * type de lien
      * lien
      -  onglet 2 : cible
      * cible (target)
      -  onglet 3 : avancé
      * id
      * sens d’écriture
      * touche d’accessibilité
      * nom
      * code de langue
      * description (title)
      * classe CSS
      * style
      * ...
      Dans ce cas-là, on peut se dire que l’interface est lourde voir en rebuter plus d’un. Et finalement, parmi les personnes ayant assisté à cette mini-formation (une dizaine de personnes), toutes ont bien assimilé le système.

      Enfin tout ça pour dire, que si il y avait ce champ se serait très pratique, et de mon point de vue, cela n’alourdira pas l’interface.

      Désolé de la longueur de mon message, mais je préfère en mettre trop que pas assez.

      Merci encore.

    Répondre à ce message

  • 3

    Bonjour,
    je bataille sur un truc tout bete depuis un grand moment....
    Y a moyen d’afficher le titre (champ nom) d’une composition du noizetier dans une noisette pour l affichage sur la partie publique du site ? Je voulais faire une noizette genre fil d ariane mais pas moyen...
    Dans le ENV de la noisette je peux récupérer le type, l identifiant.... mais pas le titre
    Merci beaucoup
    triton

    • La description des compositions du noiZetier est stockée dans une meta noizetier_compositions. On peut donc avoir accès à ce tableau dans un squelette avec [(#CONFIG{noizetier_compositions}|unserialize)]

      Par exemple, pour avoir le nom de la composition d’articles toto (ou composition article-toto), on peut faire :

      [(#CONFIG{noizetier_compositions}|unserialize
      |table_valeur{article}|table_valeur{toto}|table_valeur{nom})]

      .

      Cordialement

    • Bonsoir,
      et merci beaucoup pour la reponse...
      Dans mon cas, je fais un :
      #CONFIGnoizetier_compositions|unserialize|table_valeurpage|table_valeur#ENVpage|table_valeurnom
      ca marche, mais ca m a l air un peu hirsute comme syntaxe, non ?
      cordialement
      triton

    • Il s’agit de la syntaxe usuelle pour récupérer une information dans un tableaux de tableaux de tableaux ...

    Répondre à ce message

  • 6
    triton

    D’accord...
    Par contre : « chaque noisette a son propre cache » c est a dire la valeur #CACHE indiquée dans le fichier ma_noisette.html ?
    Si je mets #CACHE0 dans ce fichier, je constate que son contenu n’est pas rafraichi automatiquement à l affichage de la page, et que je dois « recalculer la page » pour que celui ci se mette à jour... Je ne comprends donc pas trop l articulation entre le cache de la page et celui de la noisette ?
    merci bien
    triton

    • Autant pour moi. Après relecture du code, les noisettes sont inclues en statique. Cela signifie qu’elles n’ont pas de cache autonome mais que leur cache est celui du squelette dans lequel elles sont inclues.

      Toutes mes excuses.

    • triton

      arch.... c est embêtant ca... j ai une noisette qui doit impérativement avoir un cache à 0 (une sorte de panier de commandes) et qui doit en plus se trouver sur toutes les pages du site... Difficile de mettre tout un site en no-cache.... Y aurait un contournement possible ?
      cordialement
      triton

    • Je vais creuser la question est essayer de faire évoluer le noiZetier pour permettre d’indiquer dans le YAML d’une noisette :

      - inclusion: 'dynamique'

      afin de faire des noisettes disposant de leur propre cache. Mais va falloir patienter un peu pour trouver la bonne solution technique.

    • triton

      Et bien ca serait vraiment très chouette !
      triton

    • Normalement ça devrait être géré par la version 0.12.0 du noiZetier en ajoutant au YAML de la noisette :
      inclusion: 'dynamique'. Dans ce cas, la noisette aura son proche cache défini avec #CACHE.

      Bien sûr, il faut tester que ça fonctionne sans problème et il est nécessaire de vider le cache.

    • triton

      hein ? « patienter un petit peu » c est 24 H ?
      parce que chez moi c est plutôt entre 3 et 6 mois....
      Et en plus, ça marche totalement bien !
      un très grand merci
      triton

    Répondre à ce message

  • 1
    triton

    Bonjour,
    comment fait on pour régler la durée du #CACHE sur une « composition du noizetier »
    cordialement
    triton

    • Les compositions du noiZetier n’ont pas de durée de cache autonome. Elles héritent de la durée du cache du fichier contenu/article.html, sans oublier que chaque noisette a son propre cache.

      Pour avoir une composition ayant sa propre durée de cache, il faut faire une « vraie composition », c’est-à-dire une composition classique avec son propre squelette et son propre xml de description.

    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