Grappes 1.0 & 2.0

Présentation et nouveautés

Cette version 1.0 du plugin Grappes est un portage pour SPIP 3.x. Le plugin permet de grouper des objets de SPIP dans des grappes. Les objets du core (articles, rubriques, auteurs, etc.) sont pris en charge, ainsi que les nouveaux objets ajoutés par des plugins.

Côté technique, le plugin utilise les nouvelles spécifications et APIs de SPIP 3 (api de déclaration d’objet, de gestion de liens).

La version 2.0 présente une rupture de compatibilité pour vos squelettes si vous utilisiez {par rang} pour trier l’affichage de vos grappes.
Cette rupture de compatibilité a été rendue nécessaire pour adapter le plugin à SPIP 3.3.

Installation et configuration

Ce plugin nécessite le plugin Sélecteurs générique en version 0.8.3 minimum.

Attention ! : pensez bien à activer le fichier htaccess.txt de SPIP en le renommant en .htaccess ; sans ça le plugin ne fonctionnera pas (ceci est impératif pour l’auto-complétion des champs de recherche).

Utilisation du plugin

La page qui liste les grappes du site est accessible dans le menu Édition de l’espace privé.

Cette page affiche une la liste des grappes du site et un lien qui permet de créer une nouvelle grappe.

La page de vue permet d’éditer les liens de la grappe, modifier son logo et de supprimer la grappe.

La page d’édition d’une grappe permet de modifier : le titre, le descriptif, les types d’objets que l’on peut lier à la grappe et les droits d’accès.

Boucles et balises

Tables du plugin

La table spip_grappes est la table principale du plugin, c’est elle qui contient les informations relatives aux grappes.

spip_grappes
Nom du champtypeutilitébalise
id_grappe auto incrémenté ... #ID_GRAPPE
id_admin entier auteur de la grappe #ID_ADMIN
titre texte ... #TITRE
descriptif texte ... #DESCRIPTIF
options tableau sérialisé options de la grappe (droits d’accès, etc.) ...
liaisons liste contient les types d’objets qu’on peut lier à la grappe ...
date date date de création de la grappe #DATE
maj date date de la dernière modification apportée à la grappe #MAJ

La table spip_grappes_liens est une table de liaison classique.

spip_grappes_liens
Nom du champtypeutilité
id_grappe entier le lien avec la table spip_grappes
objet texte type de l’objet lié
id_objet entier id de l’objet lié
rang_lien [*] entier rang du lien entre l’objet et la grappe

Le champ rang de la table de liaison n’est pas exploité par le plugin (il reste à penser une bonne interface pour le proposer). Il peut très bien être utilisé par d’autres plugins qui se baseraient sur Grappes.

Quelques exemples de boucles

Pour lister les grappes d’un auteur, on écrira dans un boucle AUTEURS :

<BOUCLE_b(GRAPPES){id_admin=#ID_AUTEUR}>
#ID_GRAPPE - #TITRE
<BOUCLE_b>

Pour lister les article présent dans une grappe, on écrira dans une boucle GRAPPES :

<BOUCLE_b(ARTICLES){id_grappe}>
#ID_ARTICLE - #TITRE
<BOUCLE_b>

Et pour trier les articles selon leur rang dans la grappe avec {par rang_lien} [*] :

<BOUCLE_b(ARTICLES){id_grappe}{par rang_lien}>
#ID_ARTICLE - #TITRE
<BOUCLE_b>

Notes

[*rang en version 1 du plugin

Discussion

18 discussions

  • 2
    ELIE Edwin

    Je suis sous spip 3.17
    effectivement j’ai rencontré des difficultés pour l’utilisation « des grappes »
    j’ai suivi l’indication de Webmestre Trotsko qui precise de rajouter dans son .htaccess

    RewriteBase /nom_de_votre_dossier_spip/

    • Sous Spip 3.0.17 avec Grappes 1.0.3, sélecteur générique 0.8.9 et RewriteBase / (le site se trouve à la racine), le message « Nom inconnu » s’affiche systématiquement, aucune autocomplétion ni résultat de recherche.

      Quelqu’un aurait une piste de recherche svp ?

    • -  Dans le fichier htaccess, l’appel a l’API est il bien ajouté
      -  Quel est la réponse dans la console de firebug : y’a t’il au moins une requète en get d’envoyé et un retour quelquonque (404 )

    Répondre à ce message

  • Bonjour,

    J’ai lu que grappes pouvait fonctionner avec le plugin « Accès restreint ». Quelqu’un l’a-t-il déjà expérimenté et, si oui, comment fait-on ?

    Merci d’avance pour vos réponses.

    Répondre à ce message

  • 2

    Bonjour,

    J’utilise grappes pour la première fois : c’est vraiment pratique (plutôt que d’utiliser les mots-clés comme je le faisait souvent...) !

    Je constate néanmoins un problème de jointure sur les boucles MOTS, AUTEURS et DOCUMENTS.

    Ici, avec SPIP 3.0.13.

    Exemple :

    <BOUCLE_documents_joints(DOCUMENTS) {id_grappe}>
    #TITRE
    </BOUCLE_documents_joints>

    ne fonctionne pas comme pour les autres objets (articles, rubriques, syndic).
    Pour que ça fonctionne, j’utilise la jointure suivante dans la boucle :

    <BOUCLE_documents_joints(DOCUMENTS grappes_liens) {id_grappe}>
    #TITRE
    </BOUCLE_documents_joints>

    Cela peut peut-être se régler dans le plugin ? (je ne sais pas le faire moi-même)

    • Ha c’est étonnant car pourtant on déclare bien notre jointure dans Grappes :

      http://zone.spip.org/trac/spip-zone/browser/_plugins_/grappes/trunk/base/grappes.php#L28

      Peux-tu poster la requête sql générée par défaut ?

      Essaye d’ajouter un necessite de medias dans le paquet.xml de grappes pour voir si ça fixe le bug.

      ++

    • Tu ne reproduis pas ?
      Moi, c’est le cas sur plusieurs sites de tests (archis différentes).

      Voici pour les auteurs :

      <BOUCLE_d(AUTEURS) {id_grappe}>#NOM</BOUCLE_d>

      génère :

      SELECT auteurs.nom FROM <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+Y2hhbnNvbnM8L2NvZGU+"></span>.spip_auteurs AS <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+YXV0ZXVyczwvY29kZT4="></span> INNER JOIN <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+Y2hhbnNvbnM8L2NvZGU+"></span>.spip_auteurs_liens AS L1 ON ( L1.id_auteur = auteurs.id_auteur ) WHERE (auteurs.statut <> '5poubelle') AND (L1.id_objet = 1) AND (L1.objet = 'grappe')

      <BOUCLE_d(AUTEURS grappes_liens) {id_grappe}>#NOM</BOUCLE_d>

      génère :

      SELECT auteurs.nom FROM <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+Y2hhbnNvbnM8L2NvZGU+"></span>.spip_auteurs AS <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+YXV0ZXVyczwvY29kZT4="></span> INNER JOIN <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+Y2hhbnNvbnM8L2NvZGU+"></span>.spip_grappes_liens AS L1 ON ( L1.id_objet = auteurs.id_auteur AND L1.objet='auteur') WHERE (auteurs.statut <> '5poubelle') AND (L1.id_grappe = 1) GROUP BY auteurs.id_auteur

      Voici pour les documents :

      <BOUCLE_documents_joints(DOCUMENTS) {id_grappe}>#TITRE</BOUCLE_documents_joints>

      génère :

      SELECT documents.titre FROM <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+Y2hhbnNvbnNgLnNwaXBfZG9jdW1lbnRzIEFTIGBkb2N1bWVudHNgIElOTkVSIEpPSU48L2NvZGU+"></span>chansons<span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+LnNwaXBfZG9jdW1lbnRzX2xpZW5zIEFTIEwxIE9OICggTDEuaWRfZG9jdW1lbnQgPSBkb2N1bWVudHMuaWRfZG9jdW1lbnQgKSBXSEVSRSAoZG9jdW1lbnRzLnN0YXR1dCA9ICdwdWJsaWUnKSBBTkQgKGRvY3VtZW50cy5tb2RlIElOICgnaW1hZ2UnLCdkb2N1bWVudCcpKSBBTkQgKGRvY3VtZW50cy50YWlsbGUgJmd0OyAwIE9SIGRvY3VtZW50cy5kaXN0YW50PSdvdWknKSBBTkQgKEwxLmlkX29iamV0ID0gMSkgQU5EIChMMS5vYmpldCA9ICdncmFwcGUnKSZsdDsvY29kZSZndDsKCiZsdDtjb2RlJmd0OyZsdDtCT1VDTEVfZG9jdW1lbnRzX2pvaW50cyhET0NVTUVOVFMgZ3JhcHBlc19saWVucyl7aWRfZ3JhcHBlfSZndDsjVElUUkUmbHQ7L0JPVUNMRV9kb2N1bWVudHNfam9pbnRzJmd0OyZsdDsvY29kZSZndDsKCmfDqW7DqHJlIDoKCiZsdDtjb2RlJmd0O1NFTEVDVCBkb2N1bWVudHMudGl0cmUgRlJPTSAmbHQ7c3BhbiBjbGFzcz0mcXVvdDtiYXNlNjQmcXVvdDsgdGl0bGU9JnF1b3Q7UEdOdlpHVWdZMnhoYzNNOUluTndhWEJmWTI5a1pTQnpjR2x3WDJOdlpHVmZhVzVzYVc1bElpQmthWEk5SW14MGNpSStZMmhoYm5OdmJuTmdMbk53YVhCZlpHOWpkVzFsYm5SeklFRlRJR0JrYjJOMWJXVnVkSE5nSUVsT1RrVlNJRXBQU1U0OEwyTnZaR1UrJnF1b3Q7Jmd0OyZsdDsvc3BhbiZndDtjaGFuc29uczwvY29kZT4="></span>.spip_grappes_liens AS L1 ON ( L1.id_objet = documents.id_document AND L1.objet='document') WHERE (documents.statut = 'publie') AND (documents.mode IN ('image','document')) AND (documents.taille > 0 OR documents.distant='oui') AND (L1.id_grappe = 1) GROUP BY documents.id_document

      Avec en plus dans grappes <necessite nom="medias" compatibilite="[2.7.0;[" ></necessite>, les résultats sont les mêmes.

    Répondre à ce message

  • 4

    bonjour, l’auto-complétion pour les rubriques ne fonctionne pas (mais ça marche pour les articles, les auteurs, les mots-clés...). Du coup, il est impossible de sélectionner une rubrique dans une grappe. Est-ce que c’est un bug signalé ou identifié ?

    • le problème est en fait dans sélecteurs/grappes_rubriques.html : il manque des crochets et le code produit n’est pas conforme.

      Donc au lieu de #SET{resultats, #GET{resultats}|push{#ARRAY{label,[(#GET{rub}|textebrut)][(#TITRE|textebrut)],value,[(#TITRE|textebrut)],id,#ID_RUBRIQUE}}}

      il faut écrire [(#SET{resultats, [(#GET{resultats}|push{[(#ARRAY{label,[(#GET{rub}|textebrut)][(#TITRE|textebrut)],value,[(#TITRE|textebrut)],id,#ID_ARTICLE})]})]})]

      et ça roule.

    • Salut, et merci pour le retour. N’hésite pas à venir t’inscrire sur la liste spip-zone afin de proposer le correctif et pourquoi pas de le commiter toi même :)

      http://listes.rezo.net/mailman/listinfo/spip-zone

      ++

    • copier-coller un peu rapide dans ce que j’ai envoyé, c’est id,#ID_RUBRIQUE et non id_article bien entendu...

      @b_b : oui, j’ai déjà tout ça, mais il me semblait plus simple de commencer par ici pour signaler le problème dont je n’étais pas certain qu’il soit vraiment un bug. ;-)

    • ah ben j’aurais dû passer par ici avant de chercher le soucis et le fix qui est il me semble le même que le tien.
      Si tu rencontre un soucis et que t’as un fix qui le résout, faut pas hésiter à commiter Christophe, tu ne risques pas grand chose et tout le monde est gagnant ;)

      Bref http://zone.spip.org/trac/spip-zone/changeset/76874/_plugins_/grappes/trunk corrige pour les rubriques.

    Répondre à ce message

  • Bonjour Mathieu

    Grappes + Fabrique semble être ce dont j’ai besoin, mais la Grappe ne « voit pas » les objets créés par la Fabrique....
    que faire que faire.

    Bien cordialement

    Répondre à ce message

  • 1
    Webmestre Trotsko

    Bonsoir,

    1e question. De nouveau , des problèmes avec ce plugin. Dans l’espace privé, il fonctionne à merveille. Au niveau de l’espace public, c’est une autre histoire ! Pour information, ça fonctionnait parfaitement et facilement sous SPIP 2 avec l’utilisation du code suivant :

    [(#REM) Zone grappes ]
    <BOUCLE_grappes(GRAPPES){id_auteur}{par titre}>
    [<div id="grappe-titre">(#TITRE)</div>]
    </BOUCLE_grappes>

    Maintenant avec SPIP3, ça ne renvoie aucun résultat. Est-ce normal ? Quelqu’un parvient-t-il à s’en servir avec un site sous SPIP3 ?

    2e question. Si je souhaite afficher les grappes avec un squelette sous Zspip dans la page auteur par exemple, vu la compléxité des boucles récursives, comme on s’en sort ?

    J’ai fait plusieurs tentatives sur différents squelettes ceux livrés par défaut et Zpip etc. Sans résultats...

    Merci par avance.
    @ +

    • Salut,

      J’ai eu à peu près le même problème, je l’ai pour l’instant fixé en forceant les jointures. EN effet la jointure par défaut se fait sur mots_liens et non sur grappes_liens.
      Je voulais lister les mots des grappes, donc ma jointure n’est sans doute pas la même que toi, mais essaye :

      Cela donne :

      [(#REM) Zone grappes ]
      <BOUCLE_grappes(GRAPPES  grappes_liens){id_objet=#ID_AUTEUR}{grappes_liens.objet=auteur}{par titre}>
      [<div id="grappe-titre">(#TITRE)</div>]
      </BOUCLE_grappes>

    Répondre à ce message

  • 1
    Webmestre Trotsko

    Bonsoir,

    J’ai le même problème que Patrocle34. Le plugin Grappes... Le gestionnaire de plugins me l’installe parfaitement mais dans les faits il ne fonctionne pas du tout. Aucune manipulation n’est possible. À chaque tentative, une croix rouge s’affiche suivi de « nom inconnu » ! Pour information, le plugin Sélecteur Générique ne fonctionne pas non plus sur mon site.

    Merci par avance.

    • Webmestre Trotsko

      Rebonsoir,

      Eureka ça fonctionne. Donc mea culpa. Le souci provient bien du fameux fichier .htaccess livré par défaut avec SPIP 3.0.7 ! Il faut surtout bien renseigner le fameux champ (dans « Configuration sous-repertoire ») => RewriteBase /nom_de_votre_sous_dossier/ !

      Merci et désolé pour ce dérangement.

    Répondre à ce message

  • 1
    Patrocle34

    Bonjour, je viens de mettre le plugin grappe et sélecterus génériques.

    La grappe se crée bien mais

    je n’arrive pas à coller des auteurs dans la grappe, ni coller la grappe dans les auteurs.

    Comment faire pour créer une grappe d’auteurs puisque mon but est de regrouper les auteurs. (c’est un site d’une école donc un très grand nombre d’utilisateurs)

    je suis sous SPIP3

    Je n’ai pas essayé de passer par la BDD puisque le but est que la directrice de l’école puisse faire les groupes sans toucher la BDD.

    Par avance merci.

    • Salut, est-ce que tu arrives à associer d’autres objets aux grappes ?

      As-tu bien suivi la recommandation indiquée en début de cet article ?

      Attention ! : pensez bien à activer le fichier htaccess.txt de SPIP en le renommant en .htaccess ; sans ça le plugin ne fonctionnera pas (ceci est impératif pour l’auto-complétion des champs de recherche).

    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