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

  • Le plugin notation pour la 1.9 a un champ id_article.
    Il est très facile d’effectuer une jointure de table pour obtenir les notes des articles liés à un mot clé
    <BOUCLE_note_ponderee(ARTICLES spip_mots_articles spip_notations_articles){id_mot}{!par nb}{0,30}>

    Dans la nouvelle version pour spip 2, le champ id_article a été renommé id_objet.

    Comment lié 2 champs qui ont le même contenu mais pas le même nom en l’occurrence l’id_article de la table articles avec l’id_objet de la table spip_notations_objets ?

    D’avance merci à celui qui m’aidera.

    Répondre à ce message

  • Séverine

    Bonjour,

    Tout d’abord, merci pour votre plugins. Il fonctionne très bien chez moi.

    Je voulais savoir s’il était prévue dans une prochaine version d’intégrer sur la page article dans l’espace privée, un bloc indiquant les statistiques de notation de cet article ?

    Bonne continuation.

    Séverine

    Répondre à ce message

  • Bonjour, lorsque j’actualise la page ou il y a les étoiles de notations à cliquer, ça ajoute une étoile à chaque fois....
    Par contre le top ten reste comme il faut, et la note est bien calculée, c’est juste qu’a chaque actualisation il y a une nouvelle étoile jaune d’activé.

    SI je m’embête à actualisé c’est que quand on a voté le nombre d’étoile et la note ne change pas immédiatement.

    Avez vous le même problème ?

    Merci.

    Répondre à ce message

  • 6

    Bonjour, lorsque je prévisualise l’article que je veux poster je vois bien les puces des notes, ou les étoiles qui montrent les notes, par contre lorsque l’article est validé et publié on ne voit pas les puces/étoiles pour noter, on voit juste les N° 1 à 5 les uns au dessus des autres....
    comme ceci :

    1
    2
    3
    4
    5

    et lorsque l’on clique sur les chiffres ça prend bien le vote en compte.

    une idée du problème ?
    Merci.

    • Salut, ton problème semble venir d’une erreur javascript ou alors d’un feuille de styles qui surcharge ceux du plugin. Peux-tu nous filer l’url de la page où le problème est présent afin qu’on puisse t’aider un peu plus ?

      ++

    • Bonjour, voici le lien vers l’article : http://lcs.buhot.clg50.ac-caen.fr/spip/spip.php?article257

      c’est un site intranet de collège, avec le squelette http://tispip.etab.ac-caen.fr/spip.php?page=sommaire

      Version :
      Spip 2.0.12 [15876] et habillé par TiSpiP-sKeLeT v-2.0.5 [3097] | XHTML 1.0 Strict ! | CSS Valide

      en fichier joint la liste de plugins utilisés.

      Merci.

    • Salut, à ce que je vois les scripts du plugin notation ne sont pas insérés dans le head de tes pages. Peut être un autre plugin qui bloque cette insertion, essaye de désactiver les autres plugin un par un pour trouver lequel est responsable de ce bug.

      ++

    • oui c’est normal (enfin si tu parle des boucles), en fait le squelette est assez spécial, il est conçu pour les établissement scolaire, le but étant de ne pas modifier les pages du squelette pour garder le tout à chaque mise à jour des fichiers. en fait on met toutes les boucles dans des fichiers html dans un dossier qui est scruté par le squelette. cela évite de modifier à chaque mise à jour la page du squelette. il nous suffit d’ajouter ce fichier html (contenant la boucle) dans ce fameux dossier...

    • Ha j’ai lu trop vite.... tu ne parlais pas de la boucle.... je vais voir ça pour le script.
      je vous tiens au courant.
      Merci.

    • Finalement le problème s’est résolu en installant la mise à jour du squelette.

      Merci @ tous.

    Répondre à ce message

  • memaster62

    nouveau souci :
    je cherche donc à noter plusieurs aspects d’un article,
    dans la partie admin, visualiser les notes :
    Aucun squelette ’modeles/inc-notation-preferee-groupes_mot’ n’est disponible...

    par ailleurs,
    la notation des 2 groupes s’affiche mais pour 2 articles différents, cela semble correspondre
    aux mêmes notes et ce n’est pas « l’effet » recherché.
    http://www.restaurants-nord.com/bddresto

    je vais également mettre à jour ma version de spip, mais faudrait
    que je comprenne d’abord mon erreur.

    cordialement,

    Répondre à ce message

  • 8
    Miguel Álvarez

    Je crois qu’il faudrait explier dans ce article que cet plugin a besoin de un autre plugin : CFG

    Autrement ça marche pas !!

    • Oui, c’est bien ce qui est indiqué au début de cet article :

      mettre à jour les plugins (CFG et notations) notamment et les activer.

      ++

    • memaster62

      j’ai exactement le même pb que tony, voir plus haut.
      mes plugins cfg et notations sont à jour et activés.
      je n’ai que notation et cfg comme plugin installés.

      cordialement,

    • memaster62

      l’ajout de ceci dans les head résoud une partie du pb :

      [ <link rel="stylesheet" href="(#CHEMIN{plugins/auto/notation/css/notation.v2.css})" type="text/css" media="all" />]

      par contre les chiffres apparaissent encore en « avant plan ».

      cordialement,

    • Salut, il aurait été préférable que tu postes tes messages dans un fil dédié et non dans celui de quelqu’un d’autre (c’est plus facile à suivre ainsi). Si tu te retrouves à devoir ajouter les feuilles de styles à la main dans ton head c’est qu’il doit manquer la balise #INSERT_HEAD dans tes squelettes, non ?

      ps : comme d’habitude, un lien vers la page qui pose problème est quasi indispensable pour que je puisse vraiment t’aider, sans ça on va jouer aux devinettes pendant un moment ;)

      ++

    • memaster62

      désolé, c’est la 1re fois que je poste sur ce type de forum
      voici le lien demandé :
      http://www.restaurants-nord.com/spipresto/spip.php?article1

      ma balise

      <INCLURE{fond=inc-head}>

      est bien présente, ma page article.html est ce qu’il y a de plus classique (je pense).

      il est sans doute étrange que 2 personnes rencontrent le même pb en si peu de temps.

      cordialement,

      merci de cette réponse rapide...

    • Re, en analysant rapidement ta css je vois que c’est le text-align : center sur le body qui affecte la position du texte dans les div du formulaire de notation (appliquer un text-align right sur ces éléments fait tout rentrer dans l’ordre).

      ++

    • memaster62

      ok, merci pb résolu pour ma part. j’aurais pu chercher très longtemps l’origine
      de ce dernier souci.

      par contre, il serait bien de trouver pourquoi, certaines versions de spip ont besoin de déclarer la notation.v2.css ?

    • Avant qu’on cherche les causes de ce problème il faudrait que tu utilises un SPIP à jour afin d’être certain que le bug est toujours présent. Pour l’instant ton site est SPIP 2.0.3 (une version qui comporte des failles de sécurité) alors que la dernière version stable est la 2.1.10 (où la 2.0.15 pour la branche 2.0).

      ++

    Répondre à ce message

  • 1
    abdoulaye seye

    Pour ceux qui ont l’erreur suivante :
    Erreur SQL 1054 Unknown column ’accepter_note’ in ’field list’ SELECT accepter_note FROM spip_articles WHERE id_article = xxx

    J’ai remarqué que le problème vient de la ligne 20
    $tables_principales[’spip_articles’][’field’][’accepter_note’] = « CHAR(3) DEFAULT ’’ NOT NULL » ;
    Du fichier notation.php dans le dossier base du plugin
    J’ai vérifié dans la table spip_article et cette colonne n’était pas créé donc devinez la suite ...il faut l’ajouter manuellement voila

    • Bonjour,
      Problème idem.

      J’utilise spip en version mutualisée pour plusieurs sites.
      Une seule base de données. Donc chaque site possède ses tables spip, avec un préfixe propre au site.

      Lors de l’installation de notation, je n’ai aucun message d’erreur. Par contre à l’utilisation du formulaire notation, il y a une erreur comme quoi le champ « accepter_note » n’existe pas dans la table article.
      Après vérification, ce champ n’est pas créé à l’installation du plugin. Surement à cause du préfixe des tables, qui n’est pas « spip_ ».

      Après création manuel du champ « accepter_note » dans la table article, il n’y a plus de message d’erreur.
      Mais peut être que cela se reproduira sur d’autre tables.

      Didier

    Répondre à ce message

  • etienne

    Bonjour,
    le code présent dans l’article n’est pas traité par le plugin !!!

    <autxx|notation|id_article=yy>

    l’enregistrement des paramètre de configuration n’est peut être pas pris en compte, comme l’ouverture et la fermeture du fonctionnement pour un article..

    vous avez une idée ?

    Merci

    ps : j’ai bien vidé le cache.....
    désinstaller puis réinstaller le plugin

    Répondre à ce message

  • Gaz Electricite

    Michel,
    Etes vous sûrs d’avoir vider le cache,
    Sinon si la manip ne marche pas avec vous, vérifiez biens que dans la table spip_articles le champ accepter_note existe bien.. sinon créez le à la main « accepter_note » (char 3) not null.

    Cordialement,

    Répondre à ce message

  • 2
    Gaz electricite

    pour ceux qui ont l’erreur suivante :
    Erreur SQL 1054 Unknown column ’accepter_note’ in ’field list’ SELECT accepter_note FROM spip_articles
    c’est parce que le champs n’était pas créé dans la Table spip_articles. Donc pour faire disparaitre l’erreur il faut tout simplement désactiver le plugin puis le réactiver .

    Cordialement,

    • merci GDF EDF, mais la manip ne fait rien.
      En fait, mon message d’erreur (un peu différent de celui de blop) est :

      Erreur SQL 1054
      Champ ’accepter_note’ inconnu dans field list
      SELECT accepter_note FROM spip_articles WHERE id_article=47
      AIDE

      Ce message apparaît sur l’article sur lequel je veux (ou voudrais) travailler.
       ???

    • Salut, dans un message ci-dessous, kent1 rappelait à propos des mises à jours de plugins :

      implique en général de passer par l’administration des plugins pour mettre à jour les tables des plugins

      Si c’est une installation toute fraiche alors il y dû avoir un problème lors de la création des tables et des champs du plugin. Essaye de désactiver le plugin et de le re-activer ensuite, cela devrait relancer la procédure d’installation des tables de celui-ci.

      ++

    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