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

  • Salut,
    j’suis un peu déçu de ce plugin (mais c quand même du bon boulot).
    D’abord j’ai un bug sur l’affichage du nombre d’étoile lors de l’actualisation des pages :
    J’affiche une première fois l’article (2 votes, note 3/5) => affichage de 3 étoiles.. très bien !
    J’actualise la page => 4 étoiles s’affiche ; F5 encore => 5 étoiles... ; Je recalcul la page (commande SPIP) => 3 étoiles affichées.
    Problème de cache ?

    Hormis cela, ça serait bien de voir les notations de chaque article (genre un bloc Notation dans l’admin de l’article) et pas seulement un top 10 des mieux notés.
    Mais j’en demande peut-être beaucoup.

    Répondre à ce message

  • 1
    norbert

    J’ai installé le plugin notation : OK
    J’ai réussi à le configuer (forum=> notation) : OK
    Mais après que faut-il faire ?
    Comment l’activer pour que cela marche ?
    Faut-il écrire manuellement des instructions dans des fichiers spécifiques où tout est
    paramétrable.
    Intervenir au moment de l’écriture de l’article ?

    • Norbert

      J’ai (enfin) trouvé comment installer ce plugin.
      Dans mon cas, avec Spip 2.1.0 et sarka-spip 3.0.3.

      Voila la démarche à suivre notamment pour ceux qui ne veulent pas programmer quoique ce soit :
      1) Installer le plugin Notation (jusque là rien d’original)

      2) Dans l’espace privé, aller dans le menu forum, vous choisissez l’icône notation qui vous permet de configurer votre plugin (pondération à saisir, nombre d’étoiles à afficher).

      3) Sur la page de configuration de sarka, cliquer sur « Articles », dans le pavé intitulé « Eléments descriptifs » activer le plugin (soit dans le cartouche ou à la fin de l’article).

      4) Dans mon cas malgré cela, j’ai rencontré une erreur SQL me précisant que la table « spip_notations_objets » était introuvable. Après recherche il s’avère que dans le fichier notation.html (qui se trouve dans plugin/notation/formulaires) une instruction à l’intérieur fait appel à « spip_notations-objets » dans une boucle note.
      Or si vous n’avez pas choisi spip comme étant le nom de votre base cela provoque ce type d’erreur. Pour remédier à cela j’ai tout simplement remplacer l’instruction « spip_notation_objet » par « norbi_notation_objets » norbi étant le nom de ma base.

    Répondre à ce message

  • 4

    Je rencontre un problème pour l’affichage des étoiles. Elles s’affichent une fois qu’on a voté mais pour voter j’ai des vulgaires cases rondes. A priori pas de problème de vidage de cache, je l’ai fait plusieurs fois. J’ai aussi activé et désactivé le plugin mais rien n’y fait.
    Dois-je installer le « script Jquery Star Rating » en plus ? Comment faire ?
    J’utilise la version « Notation 0.7.1 - stable », Spip 2.1, Zpip 1.5.2 et FancyBox 0.5 entre autres.
    Et voici mon site :
    http://natureln.free.fr/spip.php?article21

    • Salut, ton site génère une erreur javascript qui bloque le script du plugin de notation.

      Dois-je installer le « script Jquery Star Rating » en plus ?

      Non pas la peine, les scripts nécessaires sont bien insérés dans tes pages par le plugin notation.

      Je vois que tu as d’autres plugins qui insèrent des scripts dans tes pages. Essaye de les désactiver un par un et teste ta page après avoir vidé le cache. Ainsi tu trouveras le plugin responsable de l’erreur javascript et on pourra commencer à « tracer le bug ».

      ++

    • C’est fait : c’est le plugin fancybox qui bloque le script du plugin. En le désactiver j’ai un fonctionnement correcte de Notation.
      Je ne sais pas comment détecter les erreurs javascript donc j’aurai du mal à débugger.
      Je dois donc choisir soit l’un soit l’autre ?
      merci @+

    • fbeliveau

      J’ai le même problème avec une configuration semblable (Notation 0.7.1, Spip 2.1 et FancyBox 0.5). Le plugin responsable de l’erreur est FancyBox 0.5.

      L’erreur provient du moins du fichier fancybox.js à la fonction fancy_init..Les appels .fancybox() ;, .fancybox(fb_commun_options) ; et .fancybox(fb_frame_options) ; causent l’erreur...j’imagine donc que l’erreur se situe dans le fichier lib/jquery.fancybox-1.3.1.js...mais je n’ai pas encore trouvé...

      var fancy_init = function()
      $(« a[type=\’image/jpeg\’],a[type=\’image/png\’],a[type=\’image/gif\’] », this)
      .addClass(« fancybox »)
      .attr(« onclick »,« »)
      .fancybox() ;
      $(fb_selecteur_galerie, this).attr(« rel »,« galerie-portfolio ») ;
      $(fb_selecteur_commun, this)
      .fancybox(fb_commun_options) ;
      $(fb_selecteur_frame, this)
      .fancybox(fb_frame_options) ;
       ;

    • Bon solution :

      • virer fancybox ainsi que sa librairie
      • passer à mediabox

      Et Notations fonctionne parfaitement.

    Répondre à ce message

  • Philippe B.

    Est-il prévu de faire évoluer ce plugin en ajoutant la notion de critères ?

    Le visiteur évalue par exemple un article selon 4 critères définis préalablement par l’administrateur. Ces critères peuvent être communs à plusieurs articles.

    Si je reprend un exemple tiré de la présentation du plugin « Notation d’articles », dans le cas d’articles sur des logiciels, le visiteur donne une note pour les graphismes, une pour la compatibilité, une pour la jouabilité... On peut ainsi classé les "logiciels" selon leur note de graphismes...

    La conception actuelle du plugin permet-elle d’aller vers cette fonctionnalité ou faut-il envisager le développement d’un autre plugin ?

    Toujours est-il, merci aux auteurs de ce plugin bien utile.

    Répondre à ce message

  • 3

    Je poste à nouveau parce que tout n’est pas rose...

    Sur mon site de dev’ en 2.1 : http://www.sden.org/dev/deadlands/aides-de-jeu-130/Atlas-du-Weird/Atlas-du-Weird-Kansas-City?var_mode=recalcul

    Il y a un souci de squelette... j’ai désintallé/réinstallé le plugin, vérifier que la table ait toutes les colonnes tout me semble ok... est-ce que l’erreur ci-dessus parle à quelqu’un ?

    Sur le site en 2.0.10 : aucun souci (http://www.sden.org/deadlands/aides-de-jeu-130/Atlas-du-Weird/Atlas-du-Weird-Kansas-City)

    Si vous pouviez me mettre sur la voie pour trouver le bug... parce que là je tourne en rond :(

    • J’ai installé « from scratch » une nouvelle version de 2.0.10 que j’ai fait évolué en 2.1 mais j’ai toujours un problème avec le formulaire : http://www.sden.org/dev/spip.php?article13551&var_mode=calcul alors qu’en prod’ (sur 2.0.10) no probemo : www.sden.org ...

      ... si quelqu’un comprend le message d’erreur :

      Erreur SQL 1054
      Unknown column 'sden_spipDB.dev_notations_objets.note' in 'field list' SELECT <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+c2Rlbl9zcGlwREI8L2NvZGU+"></span>.dev_notations_objets.note, <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+c2Rlbl9zcGlwREI8L2NvZGU+"></span>.dev_notations_objets.note_ponderee, <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+c2Rlbl9zcGlwREI8L2NvZGU+"></span>.dev_notations_objets.nombre_votes FROM <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+c2Rlbl9zcGlwREI8L2NvZGU+"></span>.dev_notations_objets AS <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+c3BpcF9ub3RhdGlvbnNfb2JqZXRzPC9jb2RlPg=="></span> WHERE (spip_notations_objets.objet = 'article') AND (spip_notations_objets.id_objet = 13551) 
      SELECT spip_notations_objets.note, spip_notations_objets.note_ponderee, spip_notations_objets.nombre_votes FROM spip_notations_objets AS <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+c3BpcF9ub3RhdGlvbnNfb2JqZXRzPC9jb2RlPg=="></span> WHERE (spip_notations_objets.objet = 'article') AND (spip_notations_objets.id_objet = 13551)
    • Ma version de mysql est : 5.0.51a...

    Répondre à ce message

  • 2

    Le plugin est-il compatible avec spip 2.1... j’ai fait un test sur un serveur de développement et les « étoiles » ne s’affichent pas... suis-je le seul ou c’est quelque chose que d’autres ont expérimenté ?

    • Pas de problème de compatibilité a priori, le plugin est utilisé ici sur SPIP-Contrib (SPIP 2.1) sans soucis

    • Evidemment :) J’ai écrit trop vite... en fait problème de création de table sur mon serveur de dev’ ... Merci pour la réponse.

    Répondre à ce message

  • 2

    Super merci !

    Il existe une méthode simple, rapide et sans risque (oui oui je suis exigeante) pour modifier mes préfixes de tables ?

    • suis aussi intéressé pour une méthode permettant de changer le préfixe d’une table existante....

      Merci

    • pour changer les noms des tables :
      soit directement dans phpmyadmin,
      soit en utilisant un plugin spip permettant dans spip d’accéder à mysql.

    Répondre à ce message

  • 1

    La table existe bien. Par contre mes tables n’on pas spip_ pour préfixe. ça pourrait venir de ça ?

    • Ok... déjà, j’arrive à reproduire. Je confirme donc.
      J’ai envoyé un email sur spip.devel mais je n’ai pas trouvé comment corriger simplement sans tout casser autour :)

      Donc oui, là le préfixe de table différent de spip_ avec une boucle(spip_qqc) ne lui plait pas. Je ne pense pas que ça vienne de notations.

    Répondre à ce message

  • 1

    Super merci, j’avance grâce à toi :)

    Reste le message d’erreur :

    Erreur(s) dans le squelette

    1 Table SQL « spip_notations_objets » inconnue _note

    lorsque je réactualise et le fait que la note moyenne ne s’affiche pas.

    Dur dur

    • Ah, j’ai peut être une piste...

      Est-ce que la table SQL spip_notations_objets existe bien dans ta base de donnée ?

      Tu n’as pas d’autre erreur SQL que celle que tu as indiqué ? genre une erreur où il y aurait la requete SQL : « CREATE TABLE spip_notations_objets ... »

    Répondre à ce message

  • 1

    Merci, après réinstall propre, ça semble avancer.

    Maintenant, le problème vient de la table notations_objets.

    objet id_objet note note_ponderee nombre_votes
    article 3 0 0 0
    article 5 0 0 0

    J’ai le massage suivant dans mes logs :

    Feb 02 09:56:38 ******* (pid 25422) Erreur de syntaxe près de ’)),2) AS moyenne_ponderee

    Je vais poursuivre mes recherches. Par contre, si vous avez un début de solution, n’hésitez pas ;p

    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