Notation d’éléments SPIP

Ce plugin propose un système de notation des éléments de SPIP depuis l’espace public.

Ce plugin est une mise à jour majeure du plugin Notation d’articles destiné à SPIP 2.0. Les principales nouveautés sont les suivantes :

  • plugin basé sur les nouveaux formulaires ajax de SPIP 2
  • utilisation du script Jquery Star Rating
  • notation des articles, des messages de forum ou tout autre autre élément de SPIP (auteurs, rubriques...)

Correctement installé (voir http://www.spip.net/fr_article3396.html), le plugin permettra aux visiteurs de noter les éléments de SPIP directement depuis l’espace public.

La notation se fait de façon classique sous forme d’étoiles cliquables, à l’apparence et au nombre paramétrable (jusqu’à 10).

Mise à jour en spip2

Ce plugin fonctionne à partir de SPIP 2.0beta2. Si vous utilisiez le plugin Notation d’articles (à jour !) avec un SPIP 1.9.2, vous pouvez (après avoir effectué les sauvegardes nécessaires de la base de données) :

  • désactiver les plugins,
  • mettre à jour votre SPIP en version 2,
  • mettre à jour les plugins (CFG et notations) notamment et les activer. Les tables du plugin notations seront alors mises à jour.

Attention : SPIP2 est une version obsolète, c’est désormais SPIP3 qu’il faut utiliser !

Comment ça marche ?

Le plugin gère 2 tables :

  • NOTATIONS : qui contient les notes saisies par visiteur, avec les champs suivant :
    • #OBJET : le type d’objet noté ; (exemple : article)
    • #ID_OBJET : identifiant de l’objet noté (exemple : 28) ;
    • #ID_AUTEUR : l’auteur ayant voté (s’il est identifié)
    • #IP : l’adresse IP (utile si le visiteur ne s’est pas identifié)
    • #NOTE : la note attribuée ;
    • #MAJ : la date de saisie de la note
  • NOTATIONS_OBJETS : qui contient les statistiques des votes par élément de SPIP :
    • #OBJET : le type d’objet noté ;
    • #ID_OBJET : identifiant de l’objet noté
    • #NOTE : la note moyenne (utiliser le filtre [(#NOTE|round)] pour avoir la note arrondie) ;
    • #NOTE_PONDEREE : la note pondérée (voir plus loin) ;
    • #NOMBRE_VOTES : le nombre de votant.

Vous pouvez afficher le contenu de ces tables via les BOUCLEs de SPIP.

Comportement :

-  On limite à un vote par article et par utilisateur (ou adresse IP lorsqu’on n’est pas enregistré).
-  Une personne non enregistrée vote donc sur son adresse IP. Si une même adresse IP vote plusieurs fois, le nouveau vote remplace l’ancien sauf s’il correspond au vote d’un utilisateur identifié qui reste prioritaire (non mais).
-  Si l’utilisateur s’est identifié, on enregistre son id_auteur, ce qui permet de gérer un vote des auteurs (vote de la rédaction, critiques...).
-  Vous pouvez limiter le vote aux personnes enregistrées au préalable, aux auteurs, aux seuls administrateurs ou l’ouvrir à tous.

Proposer un vote

Il suffit d’indiquer dans ses squelette d’afficher le formulaire de notation :

<BOUCLE_art(ARTICLES){!par date}{0,10}>
#TITRE -- notez cet article #FORMULAIRE_NOTATION<br />
</BOUCLE_art>

#FORMULAIRE_NOTATION s’applique automatiquement sur le type de boucle dans lequel il est inscrit, ainsi, il s’appliquera sur un auteur dans une boucle AUTEURS, ou permettra de voter un message de forum sur une boucle FORUMS.

Il est cependant possible de forcer le type et l’identifiant de l’objet à noter en indiquant les deux paramètres objet et id_objet : #FORMULAIRE_NOTATION{rubrique,#ID_RUBRIQUE}

Le plugin propose les variantes de formulaires suivantes :

  • #FORMULAIRE_JAIME_JAIMEPAS permet aux visiteurs de voter pour ou contre et de retirer leur vote (suivant la configuration).
  • #FORMULAIRE_JAIME permet aux visiteurs de voter pour ou de retirer leur vote (suivant la configuration).

Afficher un vote

Par défaut, la balise #FORMULAIRE_NOTATION affiche une note de la moyenne pondérée de l’élément. Une personne pouvant voter peut cliquer une étoile pour enregistrer son vote. Une personne ne pouvant pas voter ou ayant déjà votée (selon la configuration) pourra simplement voir la moyenne sans pouvoir cliquer.

Il est possible d’afficher des notes données sans utiliser le formulaire en utilisant la balise #NOTATION_ETOILE{#NOTE}, à laquelle on transmet la note à afficher.

Affichons la liste des derniers votes de visiteurs enregistrés (id_auteur>0) de l’article en cours :

<BOUCLE_dernieres_notes_article(NOTATIONS){!par maj}{0,5}{id_article}{id_auteur>0}>
- <BOUCLE_a(AUTEURS){id_auteur}>#NOM</BOUCLE_a>, Note #NOTATION_ETOILE{#NOTE}<br />
</BOUCLE_dernieres_notes_article>

Qu’on peut simplifier en forçant une jointure sur la table auteurs :

<BOUCLE_dernieres_notes_article(NOTATIONS auteurs){!par maj}{0,5}{id_article}>
- #NOM, Note #NOTATION_ETOILE{#NOTE}<br />
</BOUCLE_dernieres_notes_article>

Etre dans la moyenne

Pour trier les articles (ou autre élément) selon les critères de notation, par nombre de vote, moyenne ou moyenne pondérée, il est conseillé d’utiliser un critère spécifique {notation}. Ce critère effectue la jointure (liaison entre les tables) et les calculs.

Ainsi, la présence de {notation} permet d’utiliser {!par moyenne} :

<BOUCLES_messages(FORUMS){id_article}{notation}{!par moyenne}>
#TITRE du message, #NOTATION_NOMBRE_VOTES votes, #NOTATION_ETOILE {#NOTATION_MOYENNE}<br />
</BOUCLES_messages>

La boucle précédente va lister tous les messages de forums d’un article, même ceux qui n’ont pas reçu de notes (d’un point de vue SQL, c’est un LEFT JOIN qui est effectué). Pour afficher uniquement les messages ayant reçu des votes, il est possible de transmettre une comparaison au critère notation, ici {notation nombre_votes>0} :

<BOUCLES_messages(FORUMS){id_article}{notation nombre_votes>0}{!par moyenne}>
#TITRE du message, #NOTATION_NOMBRE_VOTES votes, #NOTATION_ETOILE{#NOTATION_MOYENNE}<br />
</BOUCLES_messages>

Pour certains cas, vous devrez utiliser la table NOTATIONS_OBJETS pour afficher vos statistiques. Vous pouvez utiliser les modèles prédéfinis (dans le dossier /modeles du plugin) ou vous en inspirer selon vos propres besoins.

Qu’est-ce que la pondération ?

Le but est d’accorder une meilleure note aux articles ayant reçu plus de votes : il est injuste qu’un article ayant reçu 1 seul vote de 5 soit mieux classé qu’un article ayant reçu 100 votes et une moyenne de 4,99 (non ?)...

On choisit la formule :

moy_ponderee = moy * (1-EXP(-5*nb_votes/ponderation)))

Si nb_votes>ponderation, on a moy_ponderee~moy, ;
sinon moy_ponderee<moy, .

Le principe de la pondération est de pénaliser les articles ayant eu peu de votes... et faire sortir en premier ceux ayant suscité le plus d’intérêt.

Le facteur de pondération est le nombre de votants que vous jugez pertinent, en fonction de la fréquentation et du nombre de votes sur votre site (tout article ayant un nombre de votes inférieur au facteur de pondération verra sa note pénalisée), il est réglable dans l’espace privé.

Pour désactiver la pondération, choisissez un facteur de pondération de 1.

Configuration dans l’espace privé

Une nouvelle icône vient s’ajouter au menu Activité [1]. Elle permet d’accéder au paramétrage du plugin : facteur de pondération, ouvrir la notation aux administrateurs, aux auteurs, aux personnes enregistrées ou à tous. Une option permet de définir si une personne peut modifier sa note après avoir voté ou non.

Le nombre d’étoiles que vous désirez afficher (la valeur max de la note, entre 1 et 10) doit être fixée en début de vote afin de ne pas créer d’incohérences dans la notation.

Les modèles du plugin

Le plugin propose un certain nombre de modèles à utiliser directement dans vos articles ou squelettes, regardez les, modifiez les pour les adapter à vos propres besoins :

-  <aut33|notation|id_article=10|left>
affiche la note de l’auteur 33 pour l’article 10
-  <notation|topten|max=10|titre=le TopTen>
affiche le topten (les 10 articles les mieux notés)

Le modèle topten


-  <notationxx|statistiques|left|titre=Statistiques>
affiche les statistiques (nombre de votes) pour l’article xx.

Le modèle statistiques


-  <notationxx|tableau|id_auteur=yy,zz,...>
affiche la note donnée par un groupe d’auteurs (yy,zz...)
-  <notation|preferee|titre=TOPTen|max=10|id_auteur=1|left>
affiche les 10 meilleures notes de l’auteur 1

FAQ

Comment gérer des critiques ?

Historiquement (issu du plugin notations d’articles), il est possible de gérer des critiques au travers des forums de l’article : dans ce cas, le titre du post doit contenir le texte [notation]. Les points positifs doivent être précédés de [+] et les points négatifs de [-].

À ce titre, un filtre est disponible : notation_critique pour supprimer les balises et remplacer [+] et [-] par une image d’img_pack (notation-plus.gif et notation-moins.gif), par exemple [(#TITRE|notation_critique)] permet de supprimer [notation] du titre du post.
Un exemple d’utilisation est donné par le modèle <autxx|critique|id_article=yy> qui affiche la critique de l’auteur xx pour l’article yy...

Le modèle de critique

Dernières évolutions du plugin

Ajoûts du dec 2010 :

Les balises #NOTATION_NOMBRE_VOTES, #NOTATION_MOYENNE et #NOTATION_MOYENNE_PONDEREE peuvent s’écrire avec une référence de boucle :
#_toto:NOTATION_MOYENNE_PONDEREE

Elles peuvent être utilisées en dehors du contexte d’une boucle ayant le critère {notation} . Il faut alors leur passer le contexte en paramètre :
#NOTATION_MOYENNE_PONDEREE{article,12}

Notes

[1Menu Forum en SPIP2.

Discussion

158 discussions

  • Je redécouvre votre plugin via Cuisine Libre, et franchement, l’idée est toute bête mais super pratique.

    Mais, après m’être arraché la tête pour comprendre pourquoi ca n’enregistrait pas bien mon vote, et avoir demandé sur IRC pour me faire rediriger ici et enfin comprendre que le rendu final de la série d’étoiles est la moyenne des votes, je me dis qu’il y a ici un petit défaut d’ergonomie.
    En effet, fonctionnellement, le formulaire de saisie et l’affichage final sont mixés.
    Il pourrait être intelligent de rajouter un affichage précisant que le vote a été enregistré, ou une indication signifiant que le nombre d’étoiles est la moyenne des votes.

    En effet, j’ai le sentiment, d’après les échanges que j’ai pu avoir, que ce n’est pas très clair pour la majorité des utilisateurs.

    Sinon, et j’insiste sur ce point, la réalisation est nickel :)
    Mais, définitivement, il faudrait réfléchir à un moyen visuel de faire comprendre la nature du chiffre affiché sous forme d’étoiles (soit une inscription, soit une différence de couleurs, soit deux étapes dans le vote).

    Ce qui peut être clair pour vous en tant que développeurs n’a pas l’air de l’être pour une majorité d’utilisateurs.

    Proposition d’amélioration (dans un registre différent) : pouvoir gérer plusieurs critères de notation. Exemple : je note des articles en pouvant spécifier plusieurs critères comme : Clarté, Concision, avec chacun leurs séries d’étoiles.

    Répondre à ce message

  • Bonjour,
    J’ai eu moi aussi un bug dans l’installation du plugin « notation » pour mon site http://page404.fr

    Rien à faire pour revenir en arrière, malgré la suppression des tables et activation/désactivation du plugin de plus les stats n’incrémentaient pas et l’affichage était, de fait, faux.

    Je suis reparti de 0 en réinstallant SPIP 2.0 + plugins et restauration de la bdd (soyons fous ! ).

    Les premiers tests s’avèrent concluants, je pense que dans l’installation nécessite une chronologie spécifique, voici ce que j’ai fait exactement, si cela peut en aider certains ? :

    1 - suppression du répertoire www en totalité (après dump de la bdd)

    2 - réinstallation de spip avec spip_loader

    3 - transfert de mon répertoire plugin/auto dans www

    4 - transfert de mes squelettes (en développement pour le moment)

    5 - reload de la bdd (celle pour laquelle j’avais supprimé les 2 tables) + vidage de cache

    5 - espace privé : activation (dans l’ordre : couteau suisse + corbeille + cfg + notation) + vidage de cache à chaque opération

    6 - vérification phpMyAdmin de la création des 2 tables notation : ok

    7 - paramétrage de « notations » dans l’espace privé + vidage de cache

    8 - espace public : tests

    Rien de bien extraordinaire, donc, mais j’aurais pourtant juré avoir procédé de la sorte la première fois et pourtant ça plantait !

    Le site est en développement, je verrai tout du long, sinon je ferai ma petite cuisine en php.

    Je vous tiens au courant sur ce forum.

    A+

    Répondre à ce message

  • 6

    Humpfff …

    Merci Marcimat d’avoir jeté un coup d’oeil :)

    Pour le suivi d’info … je ne sais pas pourquoi, ni comment (ah, les joies & mystères de l’informatique …), mais le fait est là : si le plugin (récent) « notation d’élément SPIP » ne fonctionne pas, le plugin (ancien, dépassé) « notation d’article », lui, fonctionne … ahem :-)

    Bref, tout ça était indispensable, évidemment ;-)

    • Peut être y a t’il des choses intéressantes dans les fichiers tmp/*.log de SPIP ?

    • Désolé pour le retard à répondre … 

      Les étoiles s’affichent maintenant bien (une histoire de cache, sûrement), par contre, si le vote est bien pris en compte (vérification faite dans la base), il n’est pas affiché et il annonce 0 vote.

      Par ailleurs, spip.log ne donnait rien, je viens de regarder dans mysql.log, et voici ce que j’ai :

      Jun 22 02:28:51 85.169.XX.XXX (pid 24649) You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')),2) AS moyenne_ponderee
      FROM <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+eWRpa29pPC9jb2RlPg=="></span>.spip_notations AS notations
      WHERE notati' at line 1 - 
      SELECT notations.objet, notations.id_objet, COUNT(notations.note) AS nombre_votes, ROUND(AVG(notations.note),2) AS moyenne, ROUND(AVG(notations.note)*(1-EXP(-5*COUNT(notations.note)*1.0/)),2) AS moyenne_ponderee
      FROM spip_notations AS notations
      WHERE notations.objet='article'
      	AND notations.id_objet=105
      GROUP BY notations.id_objet
    • In fine …

      Enervé (sisi quand même …), en dernière solution, la manip qui a fonctionné : la suppression dans la table spip_meta de toutes les références liées à « notation » (en plus du vidage de cache, que je faisais systématiquement) … il semble que là ait été le bug, puisque maintenant tout fonctionne.

      Désolé du dérangement :s

    • De nouveau impossibilité de faire une notation.

      Le vote est bien pris en compte dans la table spip_notation, mais la table spip_notation_objets ne contient que le type d’objet (article) et son numéro. Le vote, la note pondérée et le nb de vote ne sont pas pris en compte.

      Par ailleurs, dans mysql.log, voici l’erreur obtenue :

      Jun 25 02:02:00 85.169.38.165 (pid 12246) You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')),2) AS moyenne_ponderee
      FROM <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+YmFzZTwvY29kZT4="></span>.spip_notations AS notations
      WHERE notati' at line 1 - 
      SELECT notations.objet, notations.id_objet, COUNT(notations.note) AS nombre_votes, ROUND(AVG(notations.note),2) AS moyenne, ROUND(AVG(notations.note)*(1-EXP(-5*COUNT(notations.note)*1.0/)),2) AS moyenne_ponderee
      FROM spip_notations AS notations
      WHERE notations.objet='article'
      	AND notations.id_objet=135
      GROUP BY notations.id_objet
    • marcimat

      Ah oui, ça je sais pourquoi : il faut renseigner dans la configuration une valeur de pondération. Faudra que j’en propose une par défaut pour ne plus que ça arrive !

    • Nickel, merci !

    Répondre à ce message

  • 1

    Bonjour,

    Je n’ai rien trouvé dans la discussion ci-dessous, mais même après de multiples installations / désinstallations (y compris de tous les autres plugins), lorsque j’émets un vote, il n’est pas affiché par le plugin (aucune note, toujours « O vote ») alors qu’il est reconnu, puisque je ne peux pas revoter …

    J’ai également fait une mise à jour de tous les plugins que j’utilise ( Lecteur Multimédia en Flash (MP3,flv)
    Autorité
    Barre Typo V2 pour 1.9.2 et suivantes
    cfg : moteur de configuration
    Le Couteau Suisse
    Crayons
    Forcer le choix d’une rubrique
    Recherche FULLTEXT
    Lire aussi... (groupes d’articles)
    Mediathèque
    No-SPAM, Halte aux Spams
    Notation
    Nuage
    Social tags
    SPIP Bonux 2.0)

    Vous auriez une piste de recherche par hasard svp ?

    site : ydikoi

    • marcimat

      Firebug indique une erreur Javascript, donc quelque chose pose problème... Mais... ça devrait aussi fonctionner sans javascript et ça ne semble pas le cas. Donc je ne sais pas trop.

    Répondre à ce message

  • 1

    J’avoue que je ne comprends pas bien le principe des boucles et balises proposées par ce plugin.

    J’aimerais juste afficher la note pondérée (sans les étoiles) mais je n’y parviens pas. Quand je suis dans la boucle d’un article, je devrais pouvoir afficher la note avec #NOTE_PONDEREE non ?

    Ben non apparemment ça le fait pas, j’ai aucun résultat (pourtant j’ai deux votes sur l’article en question avec une note de 1.42 affichée dans le back office).

    Pour la documentation de ce plugin, serait il possible de reprendre le principe de la doc de spip :

    1/ Les BOUCLES, avec leurs critères

    2/ Les BALISES

    • Ok je comprends, il faut mettre le critère notation pour pouvoir ensuite utiliser la balise #NOTE_MOYENNE dans la boucle ARTICLES. C’est pas évident car à cet endroit on met d’habitude des critères de tri pour la boucle spip.

      Par ailleurs, le fonctionnement par défaut de spip est de ne rien afficher si aucun élément n’est présent. Du coup, ça aurait pu être utile de ne pas afficher de note si personne n’a voté. Ca peut se contourner ainsi cela dit :

      [ | (#NOTATION_NOMBRE_VOTES|>1| ?Note : (#NOTATION_MOYENNE,’’)]

      Bref, malgré une doc pas hyper claire (à moins d’être vraiment familier de la gestion de boucles sur des tables non spip), ce plugin est juste parfait pour mettre un peu de valeur ajoutée dans vos contenus :)

    Répondre à ce message

  • 3
    rubenxela

    Salut. Merci pour ce plugin très utile
    J’ai cependant un problème avec Explorer. J’utilise spip 2.08, lorsque j’arrive sur un article les étoiles et notes précéentes apparaissent bien, cependant, dès que je vote, donc en cliquant une étoile, le vote est enregistré mais en retour l’encart m’affiche un espèce de formulaire de vote en radio input avec un bouton submit. Pas du tout ce problème avec FF par contre.

    PS : je réédite mon message pour vous faire savoir que j’ai pu surmonter le problème en allant dans la conf du plugin et en interdisant aux votants de revoter. Il y a donc visiblement un bug sous IE avec spip 2.08 pour cette fonction.

    • Étrange tout ça, normalement ce bug a été corrigé lors d’une des dernières mises à jour du script jquery utilisé par le plugin. Quelle est la révision du plugin utilisé ? Une url pour jeter un oeil à tout ça serait assez utile pour t’aider.

      ++

    • rubenxela

      J’ai téléchargé la version du plugin téléchargeable aujourd’hui donc j’imagine qu’elle est récente. Bon là du coup ça tourne du fait que j’ai désactivé le multi vote (ce qui est pas plus mal, c’était surtout pour tester). Je ne peux te laisser d’URL piur le moment car le site que je dev est comme qui dirait « secret » pour le moment. Je referais des tests la semaine prochaine et te tiendrais au courant. Si tu me fais passer un email, je pourrais te reproduire l’erreur sur le site.

    • Je ne peux te laisser d’URL pour le moment car le site que je dev est comme qui dirait « secret » pour le moment.

      ben alors ... comment te répondre ....

      ...démerdes toi ...

      © chez nous ca marche....

      Posez vous la question .... Les développeurs malgré leurs compétences techniques n’ont en général pas les dons de devin ... et sont souvent plus scientifiques que religieux ... ils ne croient que ce qu’ils voient ...

      kent1

    Répondre à ce message

  • 1

    Ce que je m’aprecois c que le plugins n’est pas compatible avec le W3C et tous les navigateurs, donc je vais m’en passer et le coder à moins que marcimat code pendant ce vaccances.

    Répondre à ce message

  • Salut salut,

    J’essaye de changer le nombre de vote dans la base de donnée (ex : 500000) mais à chaque nouveau vote, le nombre réel réapparait.

    Peux t-on modifier le nombre de vote ?

    Merci !

    Répondre à ce message

  • Ah, y avait une petite coquille à 2 endroits de la documentation où l’on parlait de {notations} à la place de {notation} !

    Répondre à ce message

  • 1

    Existe t’il une syntaxe de boucle ARTICLES (ou autres objets) qui permette à la fois d’afficher tous les articles (même ceux pas encore notés), de filtrer ou trier sur la notation dans la boucle, et d’utiliser la note à l’intérieur de cette boucle ? (celà correspond à un « LEFT JOIN » entre une table d’objets et celle des notations des objets de ce type)

    • marcimat

      Bah oui

      Sans vérifier :

      <BOUCLE_art(ARTICLES){notation}{!par moyenne_ponderee}>
      - #TITRE - #NOTATION_NOMBRE_VOTES - #NOTATION_MOYENNE - #NOTATION_MOYENNE_PONDEREE<br />
      </BOUCLE_art>

    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