Choix des squelettes par mot clef

Présentation d’un plugin qui permet de choisir les squelettes avec des mots clefs.

La fonction de ce plugin est de sélectionner le « bon » squelette quand il y a plusieurs possibilités. Par exemple quand il existe un squelette d’article album photo et un squelette d’article ordinaire. Cette fonction existe déjà dans Spip avec des numéros de rubriques : tous les articles d’une rubrique peuvent avoir un même squelette différent du reste du site. Ce plugin permet un selection plus fine en permettant de choisir le squelette pour un article ou une rubrique en fonction d’un mot clef qui lui est associé. Le plugin va ajouter cette nouveauté en se substituant à Spip pour la partie recherche de squelette.

La sélection de squelette par mot-clé peut toujours se faire avec une boucle (voir ici comment) mais le Plugin est supposé plus performant. D’un point de vue mise en place, il faut troquer la boucle traditionnelle contre une approche installation et configuration du Plugin.

Le Plugin en action lors d’un appel de page

Lorsqu’un article, par exemple, est demandé, le plugin fonctionne comme ceci :

  1. s’il existe un fichier « article=10.html » et que l’article demandé se trouve dans la rubrique N° 10, alors ce fichier sera retenu comme squelette
  2. s’il existe un fichier « article-10.html » et que l’article demandé se trouve dans la rubrique N° 10 ou encore dans une de ses sous-rubriques sans limitation de profondeur, alors ce fichier sera retenu comme squelette
  3. s’il existe un fichier « article-album.html » et que l’article demandé est lié à un mot-clé « album » reconnu comme sélecteur de squelette [1], alors ce fichier sera retenu comme squelette
  4. s’il existe un fichier « article-album.html » et que l’article demandé se trouve dans une rubrique ou encore dans une de ses sous-rubriques sans limitation de profondeur, qui est liée à un mot-clé « album » reconnu comme sélecteur de squelette, alors ce fichier sera retenu comme squelette
  5. si rien n’a été retenu jusqu’ici, « article.html » sera l’élu.

La recherche s’effectue dans l’ordre précédent en respectant la logique qui a toujours prévalu avant dans SPIP : le plugin ajoute simplement les étapes 3 et 4, avec une même notation qui évite les duplications ou renommages de fichiers squelette.

De plus, le Plugin prend en considération la langue du site ; ainsi pour le Français, il retiendra article-album.fr.html de préférence à article-album.html suivant la notation habituelle de SPIP pour les suffixes de langue.

La mise en oeuvre du Plugin par le Webmestre

On suppose que notre squelette d’album est en place (/squelettes/article-album.html), et que le mot clé « album » a été créé avec possibilité d’être associé à des articles ou à des rubriques.

Installation

Après avoir téléchargé le plugin sur le serveur de fichier de la Zone :

Il faut le décompresser et transférer le répertoire chercher_squelettes_mots par ftp sur votre serveur dans le répertoire plugin.

Activation

L’étape suivante consiste à activer le Plugin, ce qui est fait au moyen du bouton de gestion de Plugin qu’on trouve dans la partie privée de SPIP (à partir de SPIP 1.9).

Le premier effet de cette activation est que l’on voit apparaître un nouvel onglet dans la page de configuration du site (Cf. « Configurer Squelette Mots » à droite dans l’image ci dessus). C’est par lui qu’on va pouvoir déclarer les mot-clés reconnus par le Plugin [2]. Tant que rien n’est configuré le Plugin passera de l’étape 2 à l’étape 5, comme le ferait la fonction « chercher squelette » du noyau, puisque le Plugin a pris la main sur Spip pour la recherche du bon squelette (second effet de l’activation).

Configuration

Il est temps maintenant d’entrer une « règle » dans le configurateur du Plugin. Celle-ci permet de déclarer « album » comme mot-clé sélecteur de squelette en lui associant un « type » [3] ; dans notre exemple : article. Une règle associe un groupe de mot à un type. L’exemple qui suit montre que le Plugin détecte 2 mots-clés dans le groupe « groupe squelette article » : album et toto en affichant les noms de fichiers squelette correspondants en vert (trouvé) ou en rouge (pas trouvé).

On pourra ajouter autant de régles que l’on veut tant que l’on crée les squelettes et mot-clés correspondants.
Le reste relève alors des rédacteurs/administrateurs qui n’ont plus qu’à ajouter le mot-clé « album » aux articles qu’ils souhaitent (par exemple).

On a vu que le mot-clé est associé à un article (le type) dans une règle, alors qu’il peut être ajouté indifféremment à des rubriques ou à des articles. Bien que le rédacteur n’ait aucune visibilité sur le configurateur, il doit comprendre qu’un mot-clé sélecteur appliqué sur une rubrique aura un effet sur la présentation des articles de cette rubrique car, comme Mr. Jourdain, il manipule des squelettes sans le savoir. Si cette logique est trop déroutante, l’administrateur peut toujours restreindre le champ d’application du mot-clé aux seuls articles. [4]

Fond

L’administrateur peut préciser le « fond » dans une règle. Ce fond est le préfixe du squelette, par exemple, pour article-album.html c’est « article », pour rubrique-album.html, c’est « rubrique », etc...

Attention : Il ne faut pas confondre la valeur du fond avec le type d’objet affiché dans l’article (article, rubrique) ni avec le nom du groupe de mot clef de la règle. Le fond permet simplement d’appliquer la règle à d’autres pages que les pages de base de SPIP.

Ce raffinement peut être vu comme une complication, mais cela à l’avantage de faire accepter les règles pour des squelettes d’inclusion (des bouts de squelette donc) et pas seulement sur des squelettes complets.

Attention : Pour que les règles marchent sur les inclusions, il faut que celles-ci aient l’id de l’objet (article, rubique, etc...) dans le context, par exemple : <INCLURE{fond=news} {id_article}>.

Notes

[1Voir l’explication plus bas.

[2Le Plugin mémorise les informations de configuration dans la base SQL (table meta déjà utilisée par SPIP)

[3Cette information de type indique au Plugin quelle est la table de mot visée . Le Plugin connait 4 types : article, rubrique, brèves et sites.

[4Cette problématique n’est d’ailleurs pas propre au plugin puisqu’elle existait déjà avec les notations article=xx.html et article-xx.html.

Discussion

31 discussions

  • 2

    Bonjour,

    Est-il prévu une version de ce plugin pour la version 3 de spip ?

    Frank

    • C’est sur SPMC : Squelette par mot clé V2.0 qu’est documenté le plugin fonctionnel à partir de SPIP 2.x. Il y a une version compatible SPIP 3.0, je viens de programmer sa distribution sous forme de Zip, elle apparaitra donc rapidement sur la page de doc.

    • Bonjour,
      Même question pour SPIP4. J’ai plusieurs sites qui utilisent un vieux plugin que je n’ai pas développé et qui dépend de celui-ci. Si je modifie les bornes de compatibilité dans paquet.xml ça a l’air de passer mais c’est un peu bourrin comme méthode. Comment être sûr qu’il n’y aura pas de problèmes ?

    Répondre à ce message

  • 1

    Le Plugin Compositions propose une alternative pour SPIP 2.0 qui permet de gérer très facilement les variantes de squelettes en fonction des articles, rubriques etc ...

    Répondre à ce message

  • Même chose, Fichier config_squelettesmots introuvable. Ma version de spip est la 2.0.10.
    Je vais chercher. si jamais je comprends quelque chose je reviens vous dire :)

    Répondre à ce message

  • 1

    Notre site en Spip 1.92 utilise de manière intensive ce plugin.

    Voulant passer en Spip 2.0, et Mortimer n’ayant pas le temps de s’occuper de la mise à jour de ce plugin, j’ai retrousser mes manches.

    Le plugin version 2.0 sera bientôt disponible sur la zone, je peux dès maintenant vous l’envoyer par mèl.

    • Christophe Noisette

      Le plugin est donc bien sur la zone. Trop cool à toi d’avoir pris le temps de le rendre comptatible avec spip 2.0.
      Cependant j’ai détecté un souci : quand je me rend sur la pa ge http://www.infogm.org/ecrire/?exec=config_squelettesmots, SPIP renvoit le message d’erreur suivant : Fichier config_squelettesmots introuvable.
      Donc, je ne peux pas configurer de nouvelles possibilités. Les anciennes ont été récupéré et fonctionnent bien.
      Encore merci
      Cordialement

    Répondre à ce message

  • 1

    Merci pour l’info je vais voir ce plugin de ce pas.

    • Pascal Kockaert

      Pour tenter une transition en douceur vers SPIP 2.0.x, j’ai éliminé le plugin squelettes par mots clef de la manière suivante.

      1. Renommer article.html en article-par_defaut.html
      2. Renommer rubrique.html en rubrique-par_defaut.html
      3. Utiliser les versions jointes des articles et rubriques

      Cette solution permet l’héritage des mots-clés de rubriques parentes, à l’image de ce que fait l’extension « squelettes par mots clefs ».

      Les fichiers joints supposent que les mots-clés liés à des squelettes sont tous dans le groupe de mots ’Administration’. On peut modifier le nom de ce groupe ou étendre à plusieurs groupes en indiquant
      {type IN Administration,Mes_squelettes,Et_caetera} en remplacement de {type=Administration}.

      Je ne suis pas encore passé à SPIP 2.0.x

      Bon succès avec cette solution.

      article.html

      #CACHE{86400}
      <BOUCLE_article_principal(ARTICLES) {id_article}>
      [(#SET{fond_id_mot,''})][(#SET{fond_a_charger,''})]
      
      <BOUCLE_recup_skel_art_egal(MOTS){type=Administration}{id_article}>[
      (#CHEMIN{article=#TITRE.html}|?{[(#SET{fond_a_charger,article=#TITRE})][(#SET{fond_id_mot,#ID_MOT})],''})
      ]</BOUCLE_recup_skel_art_egal>
      <BOUCLE_sivide_un(ARTICLES){id_article}{id_mot=#GET{fond_id_mot}}>
      </BOUCLE_sivide_un>
            <BOUCLE_recup_skel_art(MOTS){type=Administration}{id_article}{doublons}>[
            (#CHEMIN{article-#TITRE.html}|?{[(#SET{fond_a_charger,article-#TITRE})][(#SET{fond_id_mot,#ID_MOT})],''})
            ]</BOUCLE_recup_skel_art>
      <//B_sivide_un>
      <BOUCLE_sivide_deux(ARTICLES){id_article}{id_mot=#GET{fond_id_mot}}>
      </BOUCLE_sivide_deux>
            <BOUCLE_descente(HIERARCHIE){id_article}{inverse}><BOUCLE_recup_skel_rub(MOTS){type=Administration}{id_rubrique}{doublons}>[
            (#GET{fond_id_mot}|?{'',[(#CHEMIN{article-#TITRE.html}|?{[(#SET{fond_a_charger,article-#TITRE})][(#SET{fond_id_mot,#ID_MOT})],''})]})
            ]</BOUCLE_recup_skel_rub></BOUCLE_descente>
      <//B_sivide_deux>
      [(#GET{fond_a_charger}|?{'',#SET{fond_a_charger,article-par_defaut}})]
      <INCLURE{fond=#GET{fond_a_charger}}{id_article}{env}>
      </BOUCLE_article_principal>

      rubrique.html

      #CACHE{86400}
      <BOUCLE_rubrique_principale(RUBRIQUES) {id_rubrique}>
      [(#SET{fond_id_mot,''})][(#SET{fond_a_charger,''})]
      <BOUCLE_recup_skel_rub_egal(MOTS){type=Administration}{id_rubrique}>[
      (#CHEMIN{rubrique=#TITRE.html}|?{[(#SET{fond_a_charger,rubrique=#TITRE})][(#SET{fond_id_mot,#ID_MOT})],''})
      ]</BOUCLE_recup_skel_rub_egal>
      <BOUCLE_sivide_un(ARTICLES){id_article}{id_mot=#GET{fond_id_mot}}>
      </BOUCLE_sivide_un>
            <BOUCLE_recup_skel_rub(MOTS){type=Administration}{id_rubrique}{doublons}>[
            (#CHEMIN{rubrique-#TITRE.html}|?{[(#SET{fond_a_charger,rubrique-#TITRE})][(#SET{fond_id_mot,#ID_MOT})],''})
            ]</BOUCLE_recup_skel_rub>
      <//B_sivide_un>
      <BOUCLE_sivide_deux(ARTICLES){id_article}{id_mot=#GET{fond_id_mot}}>
      </BOUCLE_sivide_deux>
            <BOUCLE_descente(HIERARCHIE){id_rubrique}{inverse}><BOUCLE_recup_skel_rub_par(MOTS){type=Administration}{id_rubrique}{doublons}>[
            (#GET{fond_id_mot}|?{'',[(#CHEMIN{rubrique-#TITRE.html}|?{[(#SET{fond_a_charger,rubrique-#TITRE})][(#SET{fond_id_mot,#ID_MOT})],''})]})
            ]</BOUCLE_recup_skel_rub_par></BOUCLE_descente>
      <//B_sivide_deux>
      [(#GET{fond_a_charger}|?{'',#SET{fond_a_charger,rubrique-par_defaut}})]
      <INCLURE{fond=#GET{fond_a_charger}}{id_rubrique}{env}>
      </BOUCLE_rubrique_principale>

    Répondre à ce message

  • Noisette

    Bonjour
    comme les autres utilisateurs de ce plugin, je suis dans l’expectative de sa nouvelle forme, comptatible avec spip 2.0.7... Avez vous pu avancer sur ce projet ? J’aimerais faire le saut de la nouvelle version, mais mon site use et abuse de ce plugin... Merci en tout cas et bonne journée.

    Répondre à ce message

  • Une nouvelle version compatible Spip 2.0 devait voir le jour fin mars, il y a des nouvelles ?
    J’aimerais passer un de mes sites en Spip 2.0 mais sans ce plugin ça va être dur d’avoir le même résultats...

    Répondre à ce message

  • 1
    sugardaddy

    @Pierre : je serais curieux de savoir laquelle ?? Un début de réponse sur http://archives.rezo.net/spip.mbox/200812.mbox/%3C4956973E.3080807@cegetel.net%3E

    • Hello,
      je suis moi aussi en SPIP2.0 et très en peine de solution pour remplacer ce « squelettes par motclef ».

      Quelqu’un a une piste ? merci d’avance.

      Michel

    Répondre à ce message

  • Merci de ta réponse.
    Je vais donc trouver une autre solution en attendant.

    Répondre à ce message

  • 3

    Ce plugin sera-t-il adapté prochainement pour SPIP 2.0 ?

    • J’y pense, il faut juste que je trouve le temps...

    • On a commencé un portage basique dans le cadre d’un projet, mais pas sur la release stable faute de temps, c’est prévu pour fin mars environ.

    • Précision, pour fin mars c’est le portage sur la stable ;-)

    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