Compositions 1

Un plugin pour bien composer son site

Ce plugin vous permet de définir plusieurs variantes de compositions pour chaque type objet SPIP (article, rubrique, etc.) et de les appliquer simplement, au cas par cas, depuis l’espace privé.

Objectif

Ce plugin a pour but de fournir un mécanisme et une interface pour faire varier le type de composition de chaque objet en fonction des besoins.

Par exemple, vous pouvez avoir besoin de composer certains articles sous une forme d’article de journal, et certains autres comme des albums photos.

Ou vous pouvez vouloir composer certaines rubriques comme des blogs, et d’autres de façon plus classique...

Pour faire varier la composition des objets d’un même type, SPIP met nativement quelques solutions à la disposition des webmestres :

  • les squelettes suffixés par le numéro de rubrique (rubrique-23.html) permettent souvent de s’en tirer, mais présentent de gros défauts : la maintenance squelettes organisés sur ce mode devient vite très lourde, et aucune interface ne permet de changer la composition d’un objet parmi celles existantes une fois qu’elle a été fixée par le webmestre avec un squelette particulier.
  • les mots clés « techniques » utilisés dans les squelettes pour choisir indirectement le type de composition fonctionnent également. Toutefois, l’ergonomie est peu adaptée à cet usage, et si jamais le site utilise aussi des mots clés pour la navigation les administrateurs sont vites perdus.

Le plugin apporte donc une nouvelle fonctionnalité à SPIP.

Fonctionnement du plugin

Le plugin propose un formalisme de définition des compositions et une interface générée automatiquement qui permet aux administrateurs du site de choisir parmi les compositions disponibles.

Par défaut, le squelette qui définit la composition est alors automatiquement sélectionné par SPIP.

Configuration

Le plugin ne nécessite pas CFG, mais si celui-ci est installé vous pourrez modifier certaines options de fonctionnement. Dans le cas contraire, les réglages par défaut seront appliqués.

Dossier des compositions
Ce réglage vous permet de choisir le sous-dossier qui contiendra les différentes compositions. Par défaut le nom de dossier compositions/ est utilisé. C’est-à-dire que les compositions seront recherchées dans squelettes/compositions/, puis dans les sous dossiers compositions/ des plugins, etc.

Compositions des rubriques
Le plugin permet de sélectionner pour chaque rubrique un article d’accueil qui pourra être utilisé par le webmestre pour présenter la rubrique.

#ID_ARTICLE_ACCUEIL désigne l’id_article de l’article sélectionné en accueil.

Cette fonctionnalité peut être désactivée pour ne pas charger l’interface.

Sélection des squelettes
Par défaut, le squelette de la composition est sélectionné automatiquement par SPIP. Mais ce mécanisme est désactivable pour des besoins précis.

Définir des compositions

Une composition est constituée par une paire de fichiers : un squelette et un fichier XML qui l’accompagne et porte le même nom. Leur nom est composé du type de l’objet (article, rubrique ou autre) suivi du nom de la composition séparée par un tiret. Par exemple : article-edito.html et article-edito.xml ou encore rubrique-chronologique.html et rubrique-chronologique.xml.

Les compositions doivent être rangées dans un sous-répertoire de votre dossier squelettes, appelé compositions/ (le nom de ce sous-répertoire est configurable).

Il est possible de définir une composition par défaut pour chaque type d’objet, en la nommant simplement article, rubrique, etc. sans la suffixer.

Pour définir une composition de type portfolio d’un article on va par exemple :

  • créer un squelette compositions/article-portfolio.html,
  • créer à côté un fichier compositions/article-portfolio.xml.

Le squelette sera constitué classiquement de boucles et balises pour réaliser l’affichage de l’article selon le mode de composition qui vous convient. Le fichier XML pourra contenir la description de cette composition :

<composition>
	<nom>Article Portfolio</nom>
	<description>Composition adaptée aux galeries d'images</description>
	<icon>images/article-portfolio.png</icon>
</composition>

Lorsqu’aucune composition n’est définie pour un type d’objet donné, aucune interface n’apparait dans l’espace privé.

Mais lorsque vous avez défini au moins une composition, une interface apparaît et permet aux administrateurs de choisir sur chaque objet la composition qui lui convient parmi celles qui sont définies.

Utilisation avec les squelettes de type Z comme Zpip

Utilisé avec un squelette Z comme le squelette Zpip, et à partir de la version 1.0 du plugin, le fonctionnement par défaut des compositions s’applique au cœur de page (le contenu). Le dossier par défaut pour mettre les compositions est alors contenu/.

Une composition contenu/article-portfolio.html sera alors utilisée à la place de contenu/article.html, le reste de la page étant alors inchangé. Pour plus d’information sur la construction des pages dans le squelette Zpip, voir sa documentation.

ll n’y a donc aucun réglage à faire pour utiliser le plugin Compositions avec Zpip : il suffit de déclarer des compositions dans un dossier contenu/ (dans le dossier squelettes/ par exemple) pour pouvoir les utiliser pour faire varier la présentation du contenu des objets de SPIP.

Utilisation personnalisée dans les squelettes

En dehors des squelettes Z, le fonctionnement du plugin par défaut est de sélectionner automatiquement un squelette, dans son intégralité. Ce mode de fonctionnement oblige donc à définir le squelette en entier pour chaque composition.

Pour une utilisation différente du plugin dans le cadre d’un squelette personnel, et pour utiliser les compositions pour faire varier une partie de la page uniquement, le mécanisme automatique peut être désactivé.

Dans ce cas, la balise #COMPOSITION peut être utilisée dans les squelettes pour inclure la bonne variante de composition dans la partie de la page que le webmestre souhaite faire varier.

Le plugin laisse donc la liberté au webmestre d’utiliser le mécanisme de compositions en fonction de son besoin propre.

#COMPOSITION
Si par exemple, vous souhaitez que le coeur des pages articles change en fonction de la composition choisie (mais les colonnes latérales, l’en-tête et le pied de page seront inchangés), vous remplacerez la partie concernée de article.html par

<INCLURE{fond=#COMPOSITION|compositions_selectionner{article}}{env}>

Cette inclusion doit se trouver dans une boucle article dans ce cas.

#ID_ARTICLE_ACCUEIL
Pour les rubriques, il est possible également d’utilise un article d’accueil.
Si l’option est activée, l’article d’accueil sélectionné depuis l’interface peut simplement être retrouvé avec la balise #ID_ARTICLE_ACCUEIL.

Par exemple

<BOUCLE_marubrique(RUBRIQUES){id_rubrique}>
<BOUCLE_accueil(ARTICLES){id_article=#ID_ARTICLE_ACCUEIL}>
</BOUCLE_accueil>
</BOUCLE_marubrique>

Interface

Lorsque des compositions ont été mises en place par le webmestre, un formulaire de sélection apparait automatiquement dans l’espace privé sur chaque objet de ce type.

Si vous êtes webmestre, vous pouvez verrouiller les compositions que vous ne souhaitez pas laisser modifiables. Seuls les webmestres pourront alors les modifier.


Sur les articles le bloc compositions indique que l’article est sélectionné en accueil

ou permet de le sélectionner pour l’accueil de la rubrique.

ecrire/?exec=compositions
La page exec=compositions permet de lister toutes les compositions disponibles pour chaque type d’objet SPIP, ainsi que tous les objets utilisant chaque composition.

Des icones pour vos compositions
Le plugin intègre dans le sous dossier images/ plusieurs icones simples que vous pouvez utiliser et décliner pour identifier vos compositions. N’hésitez pas à proposer vos variantes pour enrichir le plugin !

Ce plugin nécessite SPIP Bonux

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

Discussion

60 discussions

  • 19

    salut,

    Spip 2.1svn[16538], Composition 1.2.0 [36458], Cfg 1.15.2 [36744] et Zcore 2.0.0-dev SVN [42041].
    Impossible de personnalisé par CFG, que se soit pour le dossier de Composition (qui est par défaut Compositions/) ou pour les deux autres options. Les informations ne sont pas enregistrées dans spip_meta et le formulaire se recharge avec les options par défaut.

    si je désactive Zcore et installe Zpip 2.0.0-dev SVN [41539], l’option dossier de Compositions est à Contenu/, mais là encore, impossible de modifier quoi que se soit.

    vrai bug ?

    • Bonjour,

      Même problème.
      -  SPIP 2.1.2 [16017]
      -  cfg : moteur de configuration 1.15.2 - stable
      -  Compositions 1.2.0 - stable
      -  SPIP Bonux 2.2.10 - stable

      avec ou sans « cfg »

      Depuis la page
      /ecrire/ ?exec=cfg&cfg=compositions
      ou
      /ecrire/ ?exec=configurer_compositions

    • Plus ou moins même soucis, avez-vous trouvé une solution ?
      Merci d’avance.

    • +1 pour exibit aussi ^^

    • Erreur de post de ma part : nouveau message : Passage à Spip V216

      Bonjour,
      Problème en installant spip216, les changements dans compositions ne sont plus possibles, le bouton « enregistrer » est inopérant aussi bien en CFG que dans le choix de la composition d’article.
      Les compositions antérieures ont été conservées, mais on ne peut pas en changer d’autres.
      Code d’erreur :

      Fatal error: Cannot redeclare balise_config() (previously declared in /mnt/102/sdb/c/0/monsite/plugins/spip-bonux/configurer/pipelines.php:296) in /mnt/102/sdb/c/0/monsite/plugins/cfg/cfg_fonctions.php on line 28

      Spip, Cfg, Bonux, Compositions neufs.
      J’utilise ce plugin avec bonheur depuis sa parution et vous en remercie.
      Je cherche la faille vers d’autres plugins, mais déjà sur quelques uns, les changements sont pris en compte.
      Merci en tout cas.

    • Re Erreur, Cfg n’était pas changé : donc, pour le passage à Spip 216, changer Bonux, Compositions et CGF.
      Ça marche.
      Merci

    • Quand tu dis « changer », tu veux dire désinstaller, virer du ftp, remettre sur le ftp et reinstaller ?
      Car si c’est le cas, c’est déjà fait de mon côté avec Bonux et Compositions (je n’utilise pas CFG) et ça ne marche toujours pas :(

    • « ça ne marche pas » et « plus ou moins le même soucis » ne sont pas des descriptions d’erreur qui permettent de te dépanner. Décrit ce qui se passe, le message d’erreur que tu as etc... si tu veux plus d’aide. Mais je confirme qu’il faut télécharger les dernières versions de Composition et de SPIP-Bonux et passer dans le panneau d’administration des plugins pour forcer la mise à jour. Vider le cache de SPIP peut aussi être utile le cas échéant.

    • Bonsoir Cédric, je te remercie pour ta réponse. J’avais bien précisé le problème, regarde juste en dessous de ce fil. Je te fais un petit copier-coller.

      — -

      Bonjour,

      J’utilise le squelette Exibit qui nécessite le plugin compositions (http://www.spip-contrib.net/Jeu-de-squelettes-EXIBIT).

      J’ai besoin de cocher la case « Ne pas utiliser la sélection automatique. La sélection est prise en charge par mes squelettes. » dans la partie configuration de plugin. Or j’ai beau cocher et valider, cela ne le prend pas en compte. Comment résoudre ce problème ?

      Merci d’avance :)

      — -

      Ceci étant, pour résumer la situation, j’ai la dernière version de Spip, de Spip Bonux et de Compositions. J’ai procédé de la manière suivante :

      -  J’ai désinstallé Spip Bonux et Compositions via le panneau d’admin des plugins
      -  Je les ai ensuite virés de mon serveur FTP
      -  J’ai vidé le cache via l’admin spip
      -  J’ai re uploadé sur mon serveur Spip Bonux et Compositions
      -  J’ai reinstallé Spip Bonux et vidé le cache
      -  J’ai ensuite réinstallé Compositions, et vidé le cache de nouveau

      Mais le problème persiste.
      Je suppose donc que je n’ai pas procédé de la bonne manière ?

      Je te remercie par avance pour tes éléments de réponse :)

    • « Frip » oui, j’ai changé, c’est à dire viré CFG,Bonux et Compositions, par ftp, car je ne peux pas faire autrement.
      Puis j’ai remis les mêmes plugins disponibles en dernières versions.
      Cache vidé, réactivation des plugins sauf CFG, configuration de Compositions impossible :
      dans
      ecrire/ ?exec=cfg&cfg=compositions

      coché une des 2 cases, l’enregistrement provoque une page blanche qui tourne sans fin.
      Même réaction avec CFG réactivé.
      Par contre le choix des différentes compositions de mes pages est fonctionnel et opérant.
      Les squelettes changent à volonté.
      C’est la 1e boîte de configuration (dont je ne me sers pas) qui coince...
      Spip 2.1.6 chez free

    • Moi la sélection de la composition a toujours marché, le truc c’est que dès que j’en choisis une, cela me fait sauter tout le squelette, car j’ai besoin de cocher, dans le panneau d’admin du plugin, la case « Ne pas utiliser la sélection automatique. La sélection est prise en charge par mes squelettes. ».

      Chose qu’il m’est impossible de faire, j’ai beau cocher, valider pour enregistrer, ça ne le prend pas en compte.

    • Je mettais ça sur le compte de Spip 2.1.6, mais, en fait comme je ne me sers pas de cette boîte de dialogue, je ne m’en suis pas aperçu avant.
      J’ai testé hier en cochant une case, impossible ensuite de la décocher, j’ai été obligé de repasser par la base meta du phpmyadmin pour annuler le choix.

    • Ah bah ca serait une solution ! Quelles sont les lignes à changer et e quelle manière ? J’ai l’impression que je n’ai pas d’entrées pour composition dans ma table meta...

      (j’ai le même problème que Frip)
      Merci beaucoup.

    • Bonjour,
      J’ai fait ceci dans phpmyadmin :

      spip_meta ====> afficher==(tri alphabétique)==>compositions==>éditer===>le champ valeur contient ceci :

      a:3 :s:19 :« chemin_compositions » ;s:13 :« compositions/ » ;s:24 :« utiliser_article_accueil » ;N ;s:13 :« styliser_auto » ;N ;

      (Je n’ai coché aucune case)
      Copier coller de local à distant qui bloquait le choix des squelettes pour les articles, et tout va.

      La syntaxe était différente avec l’autre version Non et pas N, par exemple.
      Mais je n’en tire aucune conclusion, parce que je viens de changer N en O, puis en Oui et rien n’a bougé (je pensais voir les cases cochées dans la config de compositions)

    • Merci pour votre réponse.
      Malheureusement ça n’a rien changé pour moi.
      Ce champ n’existait même pas dans ma table ! Le nom est bien juste « compositions » ?
      J’ai essayé avec un copier coller, en mettant O, N, Oui, Non, rien n’y fait. J’ai même changé le chemin d’accès au dossier, et ça ne change rien. La ou ça marchait avant ça continue à marcher, là ou ça ne marchait pas ça n’a rien changé.

      Je trouve ça bizarre que le champ ne soit pas présent dans ma table... connaissez vous le fichier qui gère les valeurs par défaut de ces 3 paramètres ? Cela permettrait de régler le problème encore plus à sa source...

      Merci

    • Pas bête l’histoire de modifier directement dans la base, il faudrait que je m’y penche, pitet cela me permettrait-il de pouvoir sélectionner « ne pas activer la sélection automatique ».

    • Bonne nouvelle, je viens enfin de résoudre le bug affectant le formulaire de configuration. Il faut mettre à jour le plugin en version 1.2.3.

    • Merci infiniment ! le problème est résolu !

    • Mille merci Cédric !
      Problème résolu, et tout fonctionne impeccable.

    • Merci, en effet, après mise à jour, tout fonctionne comme avant avec un Spip 2.1.6.
      Je viens de vérifier, le message dans spip_meta, contient « non » à la place de « N » (pour Nul je suppose)...
      On se sent mieux quand on l’a dit.

    Répondre à ce message

  • Bonjour,

    J’utilise le squelette Exibit qui nécessite le plugin compositions (http://www.spip-contrib.net/Jeu-de-squelettes-EXIBIT).

    J’ai besoin de cocher la case « Ne pas utiliser la sélection automatique. La sélection est prise en charge par mes squelettes. » dans la partie configuration de plugin. Or j’ai beau cocher et valider, cela ne le prend pas en compte. Comment résoudre ce problème ?

    Merci d’avance :)

    Répondre à ce message

  • Bonjour,
    Je trouve dommage que l’interface « composition » apparaît dans la colonne de gauche. Des éditeurs ont tendance à oublier de sélectionner la bonne composition. Apparemment, le plugin bandeau règle le problème en plaçant l’interface composition dans la colonne principale....

    Répondre à ce message

  • Hubert Simard

    Je cherche à utiliser la fonction de choix de page d’accueil dans des rubriques.

    L’installation du plugin semble avoir bien fonctionné. L’interface de choix d’articles apparaît dans les pages privées de rubrique avec la liste des articles. Après avoir fait le choix le résultat est indiqué, y compris sur la page privée de l’article.

    Il n’y a rien de changé dans les page publiques.

    J’utilise le squelette Eva-Web. Compositions est installé dans le répertoire auto. spip bonux et cfg sont installés.

    Même si l’interface est opérationnelle, Composition indique « aucune composition ».

    Est-ce une question de configuration ?

    Merci de m’aider le plus explicitement possible.

    Répondre à ce message

  • 4
    Christine

    Je cherche à mettre mon dossier de compositions, mais il ne veut pas.
    Par défaut, il me met « /contenu » et si je change en « /compositions » puis valide alors il me remet « /contenu ».

    • As-tu le plugin Zpip actif ?
      Si oui, c’est le comportement normal de Compositions dans l’environnement de Zpip, qui l’utilise déjà : tes “compositions” agissent alors dans la portée du block “contenu” de Zpip.

    • Christine

      Oui, j’ai le plugin ZPIP actif. Si ZPIP l’utilise déjà, ça veut dire que je n’ai pas besoin du plugin Compositions avec le plugin ZPIP actif ?

      Si je veux créer une composition (un fichier XML associé à un fichier HTML), je dois donc la mettre dans \squelettes\contenu ou dans \zpip\contenu ?

    • zpip est un plugin mais agit comme un squelette (qui surcharge toutes les fonctions de la dist). En général on n’écrit pas en direct dans le répertoire plugins/zpip/* (ni dans la dist/*), à moins de courir le risque d’écraser son travail lors d’une mise à jour.
      Donc tes propres compositions sont à mettre dans squelettes/contenu/.

      As-tu besoin du plugin Compositions ? Zpip l’intègre pour découper/composer une page en blocks “entete”, “contenu”, “navigation”, ... et te permet de surcharger ainsi seulement quelques petits squelettes.
      -  Par ex. si tu veux juste modifier l’affichage de la partie “contenu” d’un article, tu surcharges (le comportement prévu de zpip) en copiant le fichier plugins/zpip/contenu/article.html dans squelettes/contenu/article.html puis modifies ce dernier en conséquence... pour avoir un article tout neuf.
      Le mécanisme de compositions s’applique déjà (via zpip) à tous les objects spip, ainsi qu’aux pages que tu auras crées comme page-plan.html ou page-toto.html. L’utilité d’installer en plus le plugin Compositions est d’aller encore plus loin, de proposer tes propres compositions, voire d’exploiter à fond zpip.

    • Christine

      Merci pour cette réponse très claire.

      Je vais donc désactiver le plugin Compositions et pour le moment personnaliser au maximum mon site en surchargeant les fichiers ZPIP.

    Répondre à ce message

  • J’utilise composition avec le squelette zpip et j’ai des articles en 2 langues (pas de secteurs de langue).
    Lorsque je suis dans une rubrique avec #ID_ARTICLE_ACCUEIL
    quel paramètre faut-il passer pour que l’article d’accueil soit dans la bonne langue ?

    merci

    Répondre à ce message

  • 2
    Dominique

    Bonjour
    je renouvelle mon message en essayant de préciser.

    J’ai installé le plugin et mis le dossier compositions dans auto/plugins/monsquelette. J’obtiens bien une fenêtre dans ma page article mais avec seulement la mention « choisir comme article d’accueil ». Or, j’ai bien réalisé une composition avec les fichiers compo.xml et compo.html. Où me suis-je trompée ?

    J’ai essayé de visualiser les compositions en utilisant http://monsite/ecrire/?exec=compositions mais j’obtiens le message "compositions : accès interdit". Je précise que je suis bien webmestre. Quelqu’un aurait-il une idée de ce que je peux faire ?

    • Aucune réponse à ce message ? Peut-être ma demande n’est-elle pas assez précise mais je ne vois pas quoi dire d’autre. N’hésitez pas à me poser des questions, ça aiderait !

    • J’ai eu la même erreur et c’était parce que mon dossier compositions était placé dans le squelette Magusine, en tout cas ça fonctionne si tu met ton dossier compositions à la racine du site spip, si tu veux le mettre ailleurs, moi j’ai modifier le chemin de ce dossier dans la config de Compositions dans CFG.

      @+

    Répondre à ce message

  • Bonjour,
    j’essaye d’utiliser composition avec Zspip. Mon premier objectif : j’ai une rubrique « auteurs », chaque article dans cette rubrique est constituée d’un titre (le nom de l’auteur), un texte (quelques mots sur l’auteur), et une photo. Je voudrais afficher une liste avec pour chaque auteur avec sa photo, son nom, et son descriptif. donc j’ai créé un répertoire /contenu dans le répertoire squelettes et j’y ai fait 2 fichiers

    rubrique-trombinoscope.html

    [(#REM)
      Squelette
    ]
    #CACHE{3600*100}
    <BOUCLE_article(ARTICLES)>
    #LOGO_ARTICLE #TITRE #TEXTE
    </BOUCLE_article>

    rubrique-trombinoscope.xml

    <composition>
    	<nom>Rubrique Trombinoscope</nom>
    	<description>Composition adaptée pour faire un trombinoscope</description>
    	<icon>images/rubrique-trombinoscope.png</icon>
    </composition>
    

    j’ai été dans l’espace privé, défini la rubrique « auteurs » comme étant une composition « trombinoscope »... jusqu’ici tout va bien

    mais sur mon site, lorsque je clique sur la rubrique « auteurs » j’ai l’affichage par défaut de zspip et non pas celui que j’ai défini dans mon (certes simple) .html

    pourquoi ?

    Répondre à ce message

  • Bon plugin ! Serait-il possible de selectionner un dossier comme composition ? Par example le dossier composition-green avec fichiers comme habillage.css, article.html, rubrique.html,...

    Avec cette option ne seulement pas il sirve pour un object <> fichier, sinon par un « theme » ou variante de « squelette » pour articles, rubriques, sous-rubriques, mots,...

    Ce simplificarai beacoup la creation de blogs diferentes a partir de rubriques ou de mots, par example.

    Il serait parfait :-)

    Salut

    Répondre à ce message

  • Dominique

    Bonjour

    ça a l’air très intéressant mais je ne comprends pas du tout comment l’utiliser.

    J’ai recopié le fichier xml proposé plus haut et j’ai fait un fichier du même nom mais html en modifiant légèrement mon squelette article habituel, j’y ai aussi ajouté la balise #COMPOSITION. Juste pour tester. Et j’ai mis mes deux fichiers dans le répertoire compositions. Eh bien ça ne fonctionne pas, le cadre « Composition » en partie privée ne me propose rien de nouveau.

    De plus, j’avais sélectionné « article de la rubrique » dans l’espoir de faire bouger quelque chose et non seulement rien n’a bougé mais de plus il n’y a aucune possibilité de désélectionner en accueil de la rubrique. Bref, la cata… et je ne comprends pas ce que j’aurais dû faire...

    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