Grappes

Ce plugin, développé par Marcimat, a pour vocation de permettre de réunir des objets SPIP, indépendamment de leurs liens « naturels ». Explications.

Ce merveilleux plugin est également disponible en version 1 pour SPIP 3 et 3.1 : http://contrib.spip.net/Grappes-1-0

Un peu d’histoire

Marcimat a reçu l’étincelle le 20 septembre 2008, on ne sait d’où elle venait et personnellement, je n’ai pas tout compris...

Utilité du plugin

Classiquement, en SPIP, on trouvera dans une rubrique située à la racine:

-  des articles écrits par des auteurs qui y ajoutent parfois des mots-clés
-  des sites syndiqués ou non avec parfois des mots-clés
-  des brèves avec parfois des mots-clés
-  des documents
-  ... ?

Ces objets ont chacun des caractéristiques différentes et l’on sait que la souplesse du système de squelettes permet de les lier de différentes manières, parfois même extrêmement pointue.

La simple liste ci-dessus montre d’ailleurs bien pourquoi les “mots-clés” sont si souvent détournés de leur usage: ils sont un moyen de regrouper librement des éléments présents dans des rubriques différentes. Mais ils ne servent en principe pas à ça... Grappe bien.

Par ailleurs, la structure posée par l’usage de SPIP est faite pour durer: on ne change généralement pas les infos publiées jour après jour. Mais il peut être intéressant de grouper des informations à un moment donné pour les dégrouper ensuite... Grappe est là aussi, par exemple, pour ça.

Par exemple... un exemple

Sur mon site de militance préféré (plus de 1000 articles publiés quand même), j’ai :
-  une rubrique “Espace membres”, fermée aux visiteurs
-  une rubrique “ECOLO à Anderlecht”, ouverte, dans laquelle on reste centrés sur nous-mêmes
-  une rubrique “Dans la commune”, ouverte, dans laquelle on parle de choses qui se passent dans la commune ET des interpellations que nos conseillers adressent au Collège...
-  des auteurs, beaucoup et de tout statut
-  ...

Eh bien, dernièrement, on a mis en place des groupes de travail qui nous ont fait apparaître un besoin nouveau:
-  ces GT ont besoin d’une rubrique ouverte (ECOLO à Anderlecht) ET d’une rubrique fermée (Espace Membres) [1]
-  ces GT concernent des personnes qui toutes sont auteur ou visiteur de notre site
-  ces GT parlent de choses qui se trouvent “Dans la commune” et pourraient vouloir référencer des sites... qui le sont parfois déjà ou qui devraient être classés “Dans la Commune” ou dans “Théma” ou...
-  ces GT vont s’intéresser ponctuellement à des dossiers, pour produire des propositions...

C’est pour tenir compte de tous ces aspects, relier des éléments différents et situés dans des contextes variables qu’on va utiliser Grappes. En outre, on décidera, dans cet exemple, que les Grappes créées n’ont pas à être définitives, contrairement aux contenus réels qui, eux, sont tous à vocation d’éternité ;-)

Installation

Grappes nécessite le plugin “Sélecteur générique”. Il vous faudra donc installer celui-ci avant d’activer grappes.

Le plugin “Grappes” se trouve dans la liste des fichiers zip de la zone. Il s’installe comme les autres plugins, à la main ou en mode automatique. Pour l’installation automatique, vous pouvez utiliser la liste de plugins de spip-contrib ou copier l’adresse du ficher zip (https://files.spip.net/spip-zone/gr... et la reporter dans la case “Adresse du plugin (ou de la liste)” sous “Configuration / Gestion des plugins”.

Reporter l’adresse du zip dans la case
Suske 2010 - GPL 3

Après, c’est valider, valider puis activer en sélectionnant Grappes dans la liste puis “Valider” une dernière fois.

Activer le plugin (cocher puis valider en bas de la liste)

Les tables de grappes

Avant d’aller plus loin, intéressons-nous aux deux tables de Grappes, puisqu’elles nous indiquent quelles balises on pourra extraire de nos futures boucles <BOUCLE_ma_grappe(GRAPPES)>, selon le principe “un_champ, #UN_CHAMP” . On pourra aussi en déduire la manière d’afficher les contenus de nos grappes

-  spip_grappes contient :

Nom du champ type utilité balise
id_grappe auto incrémenté ... #ID_GRAPPE
titre texte ... #TITRE
descriptif texte ... #DESCRIPTIF
options tableau (?) contient les différents paramètres d’exploitation de la grappe ...
liaisons tableau, liste contient les types d’objets reliables ...
maj date met en évidence la date des modifications apportées à la structure de la grappe #MAJ

-  spip_grappes_liens contient :

Nom du champ type utilité balise
id_grappe nombre le lien avec la table ci-dessus... ...
objet texte un des types autorisés dans la grappe (et listés dans spip_grappes ...
id_objet nombre couplé au type ci-dessus, permet de retrouver un objet donné (son id, donc) ...

Grâce à la gestion des jointures externes par SPIP, on voit que cette table nous permettra d’afficher simplement les contenus de la grappe dans leurs boucles propres grâce à un simple critère {id_grappe=XX} ou plus simplement {id_grappe} pour peu que cet id soit présent dans le contexte (dans l’URL ou la boucle GRAPPES englobante).

Configuration

Il n’y a pas de configuration spécifique à réaliser. L’objet grappes est désormais disponible, il reste à en créer, comme on le ferait pour des articles, mots clés, etc.

Création d’une grappe

Grappes est accessible via le menu “Édition”...

Menu “Edition / Grappes”
Créer une nouvelle grappe

L’interface vous propose logiquement de créer une nouvelle grappe. Allons-y par l’exemple: pour mon site, j’ai besoin d’une grappe “Groupe mandataires”. Après avoir précisé que ce site implémente à peu près tout ce que SPIP peut proposer, je vous laisse découvrir la démarche de création par l’image.

Définir les contenus de la grappe

Après validation, je me retrouve devant une interface présentant ma grappe et ses zéro objets.

Il reste à en ajouter. Vous tapez quelques lettres dans une des cases et les objets concernés correspondants s’affichent. Pratique.

Cliquer sur la bonne correspondance dans la liste et puis “Valider”.

Zou. Simple. Après quelques minutes, ça donne par exemple ceci :

Afficher les contenus de mes grappes

Reste à gérer l’affichage public. C’est assez simple en fait, vu que vous disposez tout simplement d’un objet SPIP supplémentaire, avec ses boucles et balises, comme les autres :
-  une boucle <BOUCLE_magrappe(GRAPPES)>
-  les balises #TITRE, #DESCRIPTIF, ... pour vos boucles grappes
-  les critères correspondants ( {id_grappe}, {titre}, ... (v. ci-dessus) )
-  dans les boucles d’objets liés à une grappe, vous avez aussi désormais à disposition le critère {id_grappe}.

Un détail qui a toute son importance: la cohabitation avec le plugin “Accès restreint 3.0” est parfaite. Les éléments restreints sont cachés ou affichés selon les droits du visiteur.

Deux boucles “basiques”

-  Pour lister vos grappes, insérer quelque part dans un squelette :

<BOUCLE_grappes(GRAPPES)>
<h2><a href="#URL_PAGE{grappe,id_grappe=#ID_GRAPPE}">#TITRE</a></h2>
#DESCRIPTIF
</BOUCLE_grappes>

-  Dans le squelette “grappe.html” placer par exemple :

<BOUCLE_grappe(GRAPPES){id_grappe}>
<h2>#TITRE</a></h2>
#DESCRIPTIF
<p>Cette grappe contient:</p>
 
 <ul>
 <BOUCLE_rub(RUBRIQUES){id_grappe}>
       <li>Rubrique: #TITRE </li>
 </BOUCLE_rub>
 <BOUCLE_art(ARTICLES){id_grappe}>
       <li>Article: #TITRE</li>
 </BOUCLE_art>
 <BOUCLE_mot(MOTS){id_grappe}>
       <li>Mot-Clé: #TITRE</li>
 </BOUCLE_mot>
 <BOUCLE_aut(AUTEURS){id_grappe}>
       <li>Auteur: #NOM</li>
 </BOUCLE_aut>
 <BOUCLE_site(SYNDIC){id_grappe}>
       <li>Site: #NOM_SITE</li>
 </BOUCLE_site>
 </ul>
</BOUCLE_grappe>

Voilà, voilà. Bon amusement !

Footnotes

[1Ce dédoublement montre qu’il faudra revoir la structure du site: OK, c’est en cours. Dans l’intervalle, je ne veux/peux pas compliquer la gestion d’Accès restreint...

Je reviendrai ici avec des modèles (et des liens) plus percutants mais il faut encore que je les fasse et les rende publics et génériques... :-)

D’autre part, n’hésitez pas à signaler vos utilisations et proposer vos boucles ci-dessous !

Discussion

23 discussions

  • 2

    Salut,

    vraiment très intéressant d’un point de vue conceptuel ce plugin
    voilà un question et une suggestion :
    -  existe-t-il une pipeline pour déclarer la possibilité d’ajouter d’autres objets aux grappes (typiquement, je pense aux jeux)
    -  pourrait-on envisager de relier des grappes aux grappes (avec un contrôle de récursivité pour éviter d’avoir des boucles infinies) ?

    • Héhé, là, marcimat va devoir se mouiller paske moi, les pipelines, j’emploie ceux des autres ;-)

      Une autre idée qui vient de me passer par la tête: une gestion des droits sur les grappes (genre un Accès restreint portant sur des Grappes plutôt que des rubriques).

    • Non, pas de pipeline, mais des commentaires pour ajouter des contenus dans le formulaire, comme pour l’actuelle page de groupes de mots de SPIP. C’est pas idéal, mais ça marche. Pour les mots, il y a ça dans le formulaire : <!--choix_tables--> et plus loin <!--choix_acces-->. Le plugin Agenda l’utilise de la sorte pour ajouter sa colonne évènement :

      function agenda_editer_contenu_objet($flux){
      	if ($flux['args']['type']=='groupe_mot'){
      		// ajouter l'input sur les evenements
      		$checked = in_array('evenements',$flux['args']['contexte']['tables_liees']);
      		$checked = $checked?" checked='checked'":'';
      		$input = "<div class='choix'><input type='checkbox' class='checkbox' name='tables_liees&#91;&#93;' value='evenements'$checked id='evenements' /><label for='evenements'>"._T('agenda:item_mots_cles_association_evenements')."</label></div>";
      		$flux['data'] = str_replace('<!--choix_tables-->',"$input\n<!--choix_tables-->",$flux['data']);
      	}
      	return $flux;
      }
       
      function agenda_libelle_association_mots($libelles){
      	$libelles['evenements'] = 'agenda:info_evenements';
      	return $libelles;
      }

      Les mêmes commentaires sont présents dans grappe : <!--choix_liaisons--> et plus loin <!--choix_acces-->. Il suffit de reprendre le principe.

    Reply to this message

  • 1

    hhmm. ce plugin me fait penser, dans sa logique, au node (noeud) de drupal. Toute comparaison reste très relative, mais je trouve qu’il y a un certain rapprochement vraiment intéressant. merci pour ce plugin!

    Reply to this message

  • 1

    waou... impressionant...

    Ca c’est de la nouveauté !

    Il manque plus que des formulaires publics pour lier articles, mots clés, et rubriques, etc... quand le visiteur/rédacteur en à l’autorisation.

    Vraiment impressionné, ça va permetre tellement de choses !

    Merci vraiment !

    Reply to this message

Add a comment

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 / PostgreSQL
  • 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 apparait.

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.

Who are you?
[Log in]

To show your avatar with your message, register it first on gravatar.com (free et painless) and don’t forget to indicate your Email addresse here.

Enter your comment here

This form accepts SPIP shortcuts {{bold}} {italic} -*list [text->url] <quote> <code> and HTML code <q> <del> <ins>. To create paragraphs, just leave empty lines.

Add a document

Follow the comments: RSS 2.0 | Atom