SPIP-Contrib

SPIP-Contrib

عربي | Deutsch | English | Español | français | italiano | Nederlands

286 Plugins, 197 contribs sur SPIP-Zone, 234 visiteurs en ce moment

Accueil > Squelettes > Outils pour squelettes > noiZetier > Noisetier (abandonné) > Le projet « Noisetier » en développement

Le projet « Noisetier » en développement

16 juin 2007 – par Joseph – commentaires

2 votes

Ceci est une archive périmée mais qui reste intéressante, parfois autant pour l’article que les commentaires associés.

Ceci est une ARCHIVE, peut-être périmée. Vérifiez bien les compatibilités !

Attention, cette contribution est EN CHANTIER : elle n’est peut-être pas fonctionnelle.

Nota : une contrib au développement arrêté par son créateur, pour laisser la place au noiZetier.

Ce plugin offre une interface d’administration permettant d’insérer au choix des éléments modulaires de squelettes (noisettes) et de construire ainsi ses propres squelettes personnalisés.

Attention :

Ce plugin est en cours de développement sur la zone (http://zone.spip.org/trac/spip-zone...). La présente page a juste pour vocation de présenter les objectifs visés pour ce plugin. Aucun SAD [1] ne sera assuré tant que le plugin ne sera pas finalisé. Le noisetier est développé sur la version SVN de SPIP. Il n’est pas compatible avec les versions 1.9.2 et précédentes.

Aux origines du Noisetier

Cela fait longtemps que plusieurs discussions dans la galaxie SPIP portent sur les noisettes (petit bout de squelettes) et notamment sur la construction de page par inclusion de noisettes en différents endroits.

Le plugin/squelette BliP propose via une interface dans l’espace d’administration du site d’inclure ou non des modules dans certaines zones des pages du site.

Le projet du Noisetier est né de la réflexion sur la version 3 de BliP qui généraliserait cette idée d’inclusion, via l’interface privée, de noisettes dans les différentes zones d’une page.

Le Noisetier : un gestionnaire de noisettes

Le principe du Noisetier consiste à découper tout squelette en plusieurs sous ensembles modulaires, dit « noisettes ». Une interface d’administration dans l’espace privé permet au webmaster du site d’insérer les différentes noisettes qu’ils souhaitent sur les pages du site et de les paramétrer. Un compilateur de pages se charge ensuite de générer la page finale sur le site public.

Le plugin Noisetier n’a pour vocation que de s’occuper de la gestion des noisettes. Cependant, les plugins de thèmes pour le noisetier peuvent rajouter des fonctionnalités supplémentaires [2] telles qu’un switcher de styles (CSS) voire même la possibilité de définir soi-même la structure des pages (au travers d’un compilateur de zones)...

Comment ça marche ?

Deux plugins nécessaires

Le Noisetier nécessite pour fonctionner deux plugins : le plugin Noisetier proprement dit, et un plugin de thème compatible, ce qui permet une compatibilité avec le plugin Habillage. [3].

Structure des pages

Chaque page d’un site est découpée en plusieurs zones, typiquement :en-tête, contenu, menu, pied de page, etc. C’est le plugin de thème qui définit les différentes zones possibles [4]. L’interface de gestion du Noisetier permet quant à elle d’inclure les différentes noisettes dans les zones de son choix. Il est possible de désactiver une noisette au besoin, ou de paramétrer une noisette (voir plus loin), ou de déplacer la noisette, de préciser si elle doit apparaitre sur toutes les pages ou seulement sur certaines, ou sur toutes sauf toutes sauf certaines. Il est également possible d’inclure des textes dont les raccourcis typographiques spipiens seront traités.

Lorsque j’appelle une page, par exemple spip.php ?page=article&id_article=5, le squelette article.html situé dans le plugin noisetier est chargé. Cette page va appeler la structure de page située dans le plugin de thème [5] qui va ainsi inclure dans la page les CSS du thème et les div déclarant les différentes zones de la page, puis dans chaque zone, la structure de page du plugin de thème va appeler le compilateur de page du Noisetier. Ce dernier va alors générer le contenu de chaque zone à partir des informations contenues dans une table de la base de données qui décrit le contenu de chaque page.

Répartition des tâches

Il apparait alors que le noisetier ne gère que la construction du contenu de chaque zone, la position des zones dans chaque page étant quant à elle gérée par le plugin de thème. Les plugins de thèmes étant eux mêmes des plugins, ils peuvent fournir des fonctionnalités supplémentaires telles qu’un switcher de CSS par exemple. Il y a une distinction entre le contenu de la page géré par le noisetier (et les noisettes) et la mise en forme de ce contenu gérée par le plugin de thème.

Paramétrer les noisettes

Une déclaration sous une forme à la xml

Les noisettes seront toutes inclues de manière dynamique. Ainsi, chacune pourra avoir sa propre valeur de #CACHE. Cependant, il ne suffit pas de connaitre le nom de fichier de la noisette à installer mais également les variables d’environnement nécessaires au fonctionnement de cette noisette. Les noisettes compatibles avec le Noisetier devront donc avoir une déclaration sous une forme à la xml inclue dans une balise #REM (pour que SPIP n’affiche pas cette déclaration sur les pages du site public) qui fournira au noisetier plusieurs renseignements. Les détails de cette déclaration sont visibles ici : http://groups.google.com/group/nois....

Outre un titre et un descriptif, il sera possible de déclarer les variables d’environnement à passer à la noisette. À l’inclusion de celle-ci, seules les variables nécessaires à son fonctionnement lui seront alors transmises afin de ne pas alourdir inutilement le cache. Mais il est également possible de déclarer d’autres informations.

Emploi de mots clés techniques

D’une part, certaines noisettes peuvent nécessiter l’emploi de mots clés techniques afin de proposer des fonctionnalités avancées. À l’installation de la noisette, le Noisetier se chargera alors d’installer le ou les mots clés nécessaires à cette noisette et non encore présents dans la base de données [6].

Définition de paramètres

Les noisettes pourront également accepter des paramètres. Les paramètres seront modifiables via l’interface du noisetier et sont transmis à la noisette sous forme de variable d’environnement. Ainsi, dans la noisette, elles sont directement récupérables sous la forme #ENV{nom_param}. Exemples parmi d’autres de paramètres possibles : type de pagination, nombre d’éléments par page (pour la pagination), modèle [7] utilisé pour afficher le résumé d’un article, etc.

Déclaration dans l’en-tête html

Il se peut que certaines noisettes nécessitent une déclaration dans l’en-tête html de la page. Pour le moment, la déclaration est faite dans le descriptif de la noisette mais l’utilisation des balises #DEBUT_TEXTE_HEAD et #FIN_TEXTE_HEAD actuellement en test est envisagée.

Gestion des sources et mise à jour

Il sera possible enfin de déclarer la source d’une noisette (par exemple fraichdits, blip, etc.), un lien de documentation si besoin et surtout le numéro de version de la noisette. En effet, les noisettes pourront être améliorées avec le temps. Lorsque que l’on procède à une mise à jour des noisettes, il sera possible de demander au Noisetier de vérifier le numéro de version des fichiers html des noisettes avec le numéro de version stocké dans la base et, si besoin, de rajouter ou supprimer des paramètres, mots-clés, variables d’environnements qui ne seraient plus pertinents ou manqueraient.

Des fichiers de distribution

Fichiers de distribution

Partir de rien et installer toutes les noisettes d’un site une à une est un travail long et fastidieux. C’est pourquoi le Noisetier pourra utiliser des fichiers de distributions. Présentés sous une forme xml (décrite ici : http://groups.google.com/group/nois...), les fichiers de distribution décrivent quelle noisette (ou texte) installer à quel endroit avec les paramètres qui vont bien.

Un fichier de distribution peut décrire une configuration complète, à installer après vider les tables, ou bien juste un ensemble de noisettes à installer en plus de celles déjà présentes pour rajouter une nouvelle fonctionnalité. Un squelette générant un fichier de distribution de la configuration actuelle du noisetier permettra de réaliser facilement ses propres fichiers de distribution.

Définir une noisette

Le Noisetier considère comme étant une noisette tout fichier .html situé dans un sous-répertoire noisettes, que ce sous-répertoire appartienne à un plugin ou soit situé dans le répertoire squelettes. Autrement, un plugin pourra livrer, si ses auteurs le souhaitent, des noisettes pour le Noisetier. Ces dernières seront reconnues automatiquement par le noisetier si le plugin est activé.

Des pages virtuelles ???

Le plugin Noisetier peut gérer des pages virtuelles, c’est-à-dire des pages qui seront considérées comme telles par le Noisetier mais qui ne correspondront en réalité à aucun fichier .html existant. Mais à quoi cela peut-il donc bien servir ?

Tout d’abord, et de manière standard dans le Noisetier, les pages nécessitant un identifiant particulier, telles que article, breve, site, rubrique etc. réalisent une boucle sur cet identifiant. Si on appelle la page article avec id_article=69 et qu’il existe un article publié numéro 69, alors la page article va appeler la structure de page du plugin de thème en lui précisant que page vaut article [8]. Mais s’il n’y a pas d’article 69, alors la structure de page sera appelée avec la variable page=articles (notez l’ajout d’un s). article{{s}} est donc une page virtuelle au sens où elle ne correspond à aucun fichier de squelette mais sera considérée pour le Noisetier comme une page à part entière. Ainsi, on peut dans l’interface du noisetier préciser ce que l’on affichera en l’absence d’id_correct, par exemple un message d’erreur et la liste des derniers articles publiés [9]. Si l’on préfère renvoyer sur la page 404, il suffira d’inclure une noisette dans l’entête de la page articles et qui fera une redirection vers la page 404, tout simplement.

Cas de squelettes différents sur mot clefs

Par ailleurs, les pages virtuelles pourront être utilisée par certains plugins de thème qui souhaiterait offrir la possibilité d’afficher un squelette différent selon un mot clé.

Exemple classique, un site dispose d’un secteur forum de discussion, identifié par un mot clé technique adéquat. Les rubriques et articles de ce secteur doivent avoir une structure de page et un contenu différent que les autres. Comment ça se passe alors ? Cette fois-ci, cela se joue au niveau du plugin de thème. J’appelle toujours mon article 69. La page article.html détecte que 69 est un id_article correct et appelle la structure de page du plugin de thème [10]. Le plugin de thème, avant d’aller plus loin, va vérifier si l’article 69 est situé ou non dans le secteur forum de discussion. Si ce n’est pas le cas, alors il appelle le compilateur de page avec page=article. Sinon, il appellera le compilateur de page avec page=article-forum et le tour est joué. Il faudra juste que dans son fichier mes_options.php, le plugin de thème déclare au noisetier l’existence d’une page article-forum. Dans l’interface du Noisetier, on pourra insérer alors les noisettes appropriées dans cette page.

Une série de plugins. ..

Techniquement, le projet Noisetier se présente sous la forme de plusieurs plugins :

Le plugin Noisetier

Le plugin Noisetier proprement dit qui gère les noisettes et compile les pages. Afin de ne pas l’alourdir, il sera livré uniquement avec des noisettes basées sur la distribution fraichdist et permettant de la reproduire.

Des plugins de thème pour le noisetier

Ces plugins comprennenet notamment un thème fraichdist qui reproduira les zones (structure de page) de la distribution fraichdist et proposera un switcher de styles CSS entre les CSS de base de la fraichdist et les autres CSS développés pour la fraichdist. Par ailleurs, ce thème sera livré avec un fichier de distribution permettant de reproduire la fraichdist.

deux plugins de bibliothèques de noisettes :

ces deux plugins fourniront des noisettes supplémentaires qui seront compatibles avec le noisetier et utilisables par les différents thèmes. La première de ces deux bibliothèques comportera des noisettes nécessitant uniquement SPIP et le plugin noisetier. La seconde bibliothèque comportera des noisettes nécessitant d’autres plugins. Par exemple, des noisettes portant sur les évènements du plugin Agenda ou bien des noisettes permettant d’installer les formulaires d’abonnement du plugin SPIP-Listes.

Où en est le développement ?

Le développement du noisetier n’est pas figé. Il dépendra d’ailleurs de certaines évolutions du noyau de SPIP (intégration ou non des balises #DEBUT_TEXTE_HEAD et #FIN_TEXTE_HEAD, évolution des mots-clés pour distinguer les mots-clés techniques des autres, ...).

Si le compilateur de pages est opérationnel ainsi que l’installation des noisettes et des textes, il faut encore :
-  terminer l’interface de gestion des noisettes ;
-  mettre un peu d’ajax là-dedans ;
-  permettre le déplacement des noisettes par glisser/déposer (sur le modèle de Forms et tables) ;
-  mettre en place les pages de gestion des fichiers de distribution, des mots-clés des noisettes et de mise à jour des noisettes ;
-  découper la fraichdist en noisettes et modèles en rajoutant quelques paramètres de ci de là ;
-  réaliser un switcher de styles CSS pour le plugin de thème fraichdist ;
-  commencer à remplir les bibliothèques de noisettes ;
-  réaliser des fichiers de distribution prêt à l’emploi (par exemple une distribution type webzine, type blog, type association, etc.)

et bien sur, rien n’interdira par la suite de passer d’autres squelettes à la moulinette...

Contributions

Vos commentaires, remarques sont les bienvenues sur le forum joint à cet article. Vous pouvez également, et ce sera avec plaisir, contribuez au développement de ce plugin.

Historique des discussions

La question de la gestion des squelettes à l’aide de noisettes a déjà fait l’objet de plusieurs discussions. Pour les personnes intéressées, il est possible de consulter les pages ci-dessous (liste non exhaustive) :
-  SpipKits
-  SpipKits2
-  Coder ses squelettes avec des INCLURE
-  Proposition de structure des squelettes SPIP
-  Installateur de Squelettes - SPIP Party

P.-S.

Le logo de cet article provient de Wikipédia et se situe dans le domaine public.

Notes

[1SAD : Service Après Don

[2Des pipelines sont par ailleurs disponibles dans la page de gestion des noisettes.

[3Nous parlerons de plugin de thèmes pour le Noisetier. Cette terminologie a été choisie car le noisetier et les plugins de thèmes comporteront un fichier theme.xml les rendant compatible avec le plugin Habillage. Dans la terminologie de ce plugin, les plugins de thèmes pour le Noisetier seront des thèmes au sens de Habillage.

[4Si besoin est, il est possible de définir des zones différentes selon les pages. Par exemple, s’il existe une zone [infos contextuelles, il est possible de préciser que cette zone ne doit pas apparaître sur la page plan et la page sommaire.

[5Techniquement, la page article.html va inclure les fichier noisetier-body.html et noisetier-head.html qui sont situés dans le plugin de thème. Comme un seul plugin de thème est censé être activé en même temps, normalement ce seront les bons fichiers qui seront inclus. Pour les petits curieux, il suffit d’aller le code sur la zone : http://zone.spip.org/trac/spip-zone....

[6Par ailleurs, le Noisetier pourra gérer le fait que plusieurs noisettes utilisent le même mot clé. À la désinstallation d’une noisette, le choix sera laissé de conserver ou non les mots clés associés à la noisette. Enfin, une page de gestion des mots clés des noisettes permettra de récapituler l’ensemble des mots-clés créés et de voir les mots-clés qui ne sont plus utilisés.

[7Lorsqu’on liste les 10 derniers articles publiés, il est possible d’afficher le résumé de chaque article de plusieurs manières : juste le titre avec un lien, titre, auteur et date ou bien encore titre, date auteurs et intro avec logo. Un même résumé peut être utilisé en plusieurs endroits du site : liste des derniers articles en page sommaire, résultats d’une recherche, articles contenus dans une rubrique, etc. Nous retenons l’idée d’avoir recours à des modèles. Le modèle à utiliser est alors un paramètre de la noisette listant les 10 derniers articles. Dans l’interface du Noisetier, on peut sélectionner le modèle d’article à utiliser. le paramètre est alors passé à la noisette qui réalisera alors l’inclusion adéquate. plus de détails sur cette idée ici : http://groups.google.com/group/nois....

[8structure de page qui appellera ensuite le compilateur de page en lui passant la variable page=article, vous vous rappelez.

[9Ce que fait notamment BliP.

[10Rappel : les fichiers noisetier-head.html et noisetier-body.html.

Dernière modification de cette page le 14 avril 2010

Retour en haut de la page

Vos commentaires

  • Le 25 juin 2007 à 15:50, par ? En réponse à : Le projet « Noisetier » en développement

    C’est pile ce que je recherchais.

    Je m’étais inspiré de l’article Proposition de structure des squelettes SPIP et effectivement, c’est très pratique de pouvoir (ré)utiliser des blocs [1].

    Un des problèmes est la tendance du fichier squelette.html à devenir assez rapidement touffu avec plein de [(#ENV{skl}|=={skl_sommaire}|?{' ',''}). Ce problème semble résolu avec le projet noistier vu que l’on peut soit créer un fichier de distribution soit choisir via l’interface d’administration quelles noisettes insérer dans quelle zone.

    Je ne sais pas s’il est prévu d’ « en-noiseter [2] » les fichiers de la dist mais je pense que cela serait un grand plus pour permettre aux newbies de comprendre et réutiliser facilement des parties de cette dernière.

    Je n’ai jamais participé au développement sur la zone mais suis tout à fait prêt à offrir mes services pour un tel projet. Faîtes-moi signe, si je peux être utilie.

    [1ou plutôt noisettes

    [2transformer en noisettes

    • Le 25 juin 2007 à 16:20, par Joseph En réponse à : Le projet « Noisetier » en développement

      L’objectif du projet est d’être suffisamment générique pour que n’importe quel squelette puisse être gérés via le noisetier.

      Il est prévu de livrer le noisetier avec l’ensemble des squelettes de la fraichdist découpés en noisettes.

      Par ailleurs, les squelettes BliP seront également découpés en noisettes (le noisetier est d’ailleurs né de la réflexion sur la version 3 de BliP).

      Rien n’interdit de découper d’autres squelettes sous formes de noisettes et de créer le thème et le fichier de distribution adéquat. de plus, à partir des mêmes noisettes, il est possible de proposer plusieurs fichiers de distribution, par exemple une organisation de type blog et une autre de type webzine.

    Répondre à ce message

Répondre à cet article

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 Les choses à faire avant de poser une question (Prolégomènes aux rapports de bugs. )
Ajouter un document

Retour en haut de la page

Ça discute par ici

  • Mailsubscribers

    16 janvier 2013 – 274 commentaires

    Ce plugin permet de gérer les inscriptions (ou abonnements) à la diffusion de contenu par email. Mailsubscribers permet de gérer les inscriptions par Opt-in simple ou double et la désinscription par URL. Ce plugin gère également plusieurs listes (...)

  • noiZetier v2

    9 novembre 2012 – 36 commentaires

    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. Compatibilité La version 2 du noizetier fonctionne sous SPIP 3. Elle est (...)

  • cirr : plugin « rédacteur restreint »

    29 octobre 2010 – 60 commentaires

    Ce plugin « cirr : rédacteur restreint » permet d’affecter des rubriques aux rédacteurs et modifie les droits afin qu’un rédacteur restreint (ou un administrateur restreint) voit dans l’espace privé uniquement les rubriques qui lui sont affectées (et leur (...)

  • Un retour d’expérience d’utilisation de Formidable

    26 octobre – commentaires

    Il s’agissait de créer un formulaire d’inscription à un évènement modérer les inscriptions dans le privé publier les inscriptions dans le public Nous avons discuté de cette présentation lors de l’apéro SPIP du 15 février 2016 à la Cantine (...)

  • Métas +

    3 décembre – 14 commentaires

    Améliorez l’indexation de vos articles dans les moteurs et leur affichage sur les réseaux sociaux grâce aux métadonnées Dublin Core, Open Graph et Twitter Card. Installation Activer le plugin dans le menu dédié. Dans le panel de configuration, (...)

Ça spipe par là