Notation d’articles SPIP

Ce module propose un système de notation (rating) des articles SPIP depuis l’espace public.

Présentation

Correctement installé (voir http://www.spip.net/fr_article3396.html), ce plugin permettra aux visiteurs de noter vos articles 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).

Comment ça marche ?

Le plugin gère 2 tables :

  • NOTATIONS : qui contient les notes saisies par visiteur, avec les champs suivant :
    • #ID_ARTICLE : l’article noté ;
    • #ID_AUTEUR : l’auteur (s’il est identifié)
    • #IP : l’adresse IP (utile si le visiteur ne s’est pas identifié)
    • #NOTE : la note ;
    • #MAJ : la date de saisie de la note (pas utilisé mais peut-être plus tard...)
  • NOTATIONS_ARTICLES : qui contient la note finale de l’article, avec les champs :
    • #ID_ARTICLE : l’article bien sûr ;
    • #NOTE : la note moyenne (utiliser le filtre (#NOTE pour avoir la note arrondie) ;
    • #NOTE_PONDEREE : la note pondérée (voir plus loin) ;
    • #NB : le nombre de votant.

Vous pouvez scanner 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.

Et dans mon squelette ?

Une seule balise est à ajouter dans votre squelette, dans le fichier article.html (ou dans le fichier article-xx.html pour limiter la notation aux articles de la rubrique xx) : la balise #NOTATION. Elle prend en charge l’affichage et la gestion des notes. Elle se place classiquement sous le titre de votre article...

Attention : la balise doit être placée dans une boucle articles SPIP.

Une autre balise est introduite : #NOTATION_ETOILE{nb}.
Elle permet d’afficher un nombre (la note par exemple) sous forme d’étoiles.

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(-10*moy/(2*coef))) 

Si moy>coef, 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.

Dans l’espace privé

Une nouvelle icône vient s’ajouter au menu Forum. Elle permet d’accéder au paramétrage du plugin : facteur de pondération, limiter la notation aux administrateurs, aux auteurs, aux personnes enregistrées ou à tous.

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.

Et dans mes articles ?

Le plugin propose un certain nombre de modèles à utiliser directement dans vos articles, 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)
-  <notationxx|statistiques|left|titre=Statistiques>
affiche les statistiques (nombre de votes) pour l’article xx.
-  <notationxx|tableau|id_auteur=yy,zz,...>
la note donnée par un groupe d’auteurs (yy,zz...)

Affichage du TopTen

FAQ


-  Comment gérer des critiques ?
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...

-  J’ai déjà un système de notation à partir de mots clés ?
Si vous aviez déjà un système de notation, vous pouvez utiliser la balise #NOTATION_ETOILE{nb} pour homogénéiser l’affichage dans votre site.

Ainsi, si vous référencés des logiciels et que vous voulez attribuer une note pour les graphismes, une pour la compatibilité, une pour la jouabilité, etc. : créez un groupe pour chaque catégorie de note contenant chacun les mots clés 1, 2, 3... correspondant aux notes, puis affectez classiquement ces mots clés aux articles dans l’espace privé.
Vous pouvez alors afficher les notes correspondantes dans vos articles. Par exemple pour le groupe de mot clé jouabilité :

<BOUCLE_groupes(GROUPES_MOTS){titre=jouabilite}>
  <BOUCLE_mots(MOTS){id_article}{id_groupe}>
      Jouabilité : #NOTATION_ETOILE{#TITRE}
  </BOUCLE_mots>
</BOUCLE_groupes>

-  J’aime pas les étoiles !!
C’est votre droit... L’affichage de la note est paramétrable : pour cela, il vous suffit de définir une image notation-on.gif et notation-off.gif dans le répertoire img_pack/ de votre squelette.
Vous pouvez même définir une image différente pour chaque indice de notation : notation-on1.gif, notation-on2.gif, ... et leur pendant : notation-off1.gif, notation-off2.gif, ...

Affichage paramétrable

Vous pouvez également modifier le libellé des notes en surchargeant note_1, note_2,... dans le fichier de langue de votre squelette (lang/local_fr.php ou recopier et modifiez le fichier lang/notation_fr.php du plugin).

Mise à jour v0.2

Cette mise à jour tient compte de quelques remarques faites sur le forum.

Elle ajoute une nouvelle noisette : notation_preferee qui donne le Top Ten pour un auteur donné ou pour la personne connectée (si aucun id_auteur n’est envoyé). De quoi personnaliser un peu plus vos pages...

Afficher les 10 meilleures notes de l’auteur 1 :

<notation|preferee|titre=TOPTen|max=10|id_auteur=1|left>

Afficher les 10 meilleures notes de la personne connectée :

<notation|preferee|titre=TOPTen|max=10|left>

Mise à jour v0.3

Permet de placer plusieurs formulaire de notation sur une page (voter pour plusieurs articles sur une même page).

Corrige un bug d’affichage des étoiles (si plus de 5)...

Mise à jour 1.9.3

Test de portage pour un SPIP 1.9.3... (sans garantie)

Discussion

61 discussions

  • 2

    Bonjour,

    j’ai un petit souci. Lors du chargement sur le site public de l’article, les images des étoiles ne s’affichent pas. Par contre, elles apparaissent lorsque l’on passe la souris sur l’une d’elles. Mon URL est http://www.plus-de-golf.com.

    Pouvez-vous m’aider ?

    Merci d’avance,

    Julien

    • Bonjour,

      Vous devez avoir une image nommée notation-on1.gif dans le dossier img_pack du plugin notation... il faut l’enlever et tout devrait rentrer dans l’ordre...

      Si vous voulez personnaliser les images il faut les mettre dans le répertoire squelette/img_pack et non dans celui du plugin...

      @+
      jmv

    • GENIAL !!!! un grand merci

    Répondre à ce message

  • Avec Explorer 7 sur windows Vista les étoiles disparaissent au survol de la souris. Avez vous rencontré ce problème. merci de votre aide

    Répondre à ce message

  • 1

    ce plugin est super. mais comme on en veut toujours plus j’essaye de limiter le top ten à la rubrique en cours, j’ai essayé tout un tas de rajouts, en vain. Est ce possible ?

    • Bonjour,

      Il suffit de reprendre la boucle not du fichier notation_topten et de lui rajouter le paramètre {id_rubrique?} pour se limiter à la rubrique envoyée dans le modèle, soit vers la ligne 22 de modeles/notation_topten du plugin :

      <BOUCLE_not(NOTATIONS_ARTICLES){statut=publie}{id_rubrique?}
      {par note_ponderee}{inverse}{0,#ENV{max,10}}>

      Il faut bien sûr envoyer la rubrique au modèle lors de l’appel :
      [(#MODELE{notation_topten}{id_rubrique)]
      ou
      [(#MODELE{notation_topten}{id_rubrique=1)]
      ou dans un article :
      <notation|topten|id_rubrique=1>

      et le tour est joué ;-)

      Nota : le {statut=publie} permet d’éviter les articles détruit... suite à une remarque de bionet...

      @+
      jmv

    Répondre à ce message

  • 4

    Bonjour,

    je n’ais pas bien compris l’histoire des critiques sur les forums articles.
    Si je souhaites permettre à mes lecteurs de critiquer les articles, ou dois je inserer la balise « notation_critique » ?

    -  Sur /dist/inc_forums/

    -  sur /dist/forums/

    -  sur /dist/formulaires/forums/

     ???
    j’ais tout tenté et rien ne va.
    Par contre la balise #NOTATION marche tres bien dans le squeltte article

    • Bonjour,
      « notation_critique » est un filtre et pas une balise...

      Vous trouverez un exemple dans modeles/aut_critique.html du plugin. Vous pouvez l’appeler dans un squelette par [(#MODELE{aut_critique}{id=xx}{id_article=yy})] pour afficher la critique de l’auteur xx pour l’article yy. Ou l’utiliser dans un article : <autxx|critique|id_article=yy>.

      En fait, le modèle va chercher les messages du forum qui contiennent [notation] dans le titre et formate l’affichage.
      Si le formatage ne vous plait pas, vous pouvez regarder le code du modèle et l’arranger à votre sauce.

      De son côté, le critique doit poster un message dans le forum de l’article contenant [notation] dans le titre et éventuellement [+] et [-] avant les points positifs et négatifs. Pour éviter que ces balises n’apparaissent dans le titre et le texte du forum, on peut utiliser le filtre : (#TITRE|notation_critique)...
      Le critique doit bien entendu noter l’article (en étant connecté).

      @+
      jmv

    • Zut ça été interprété

      Je voulais dire, si je met <notation|topten> rien ne s’affiche.

    • La syntaxe correcte est : [(#MODELE{notation_topten})] dans un squelette ou <notation|topten> dans le texte d’un article.

      On peut rajouter des attributs : [(#MODELE{notation_topten}{max=10}{titre=le TopTen})]

      @+
      jmv

    • Génial ça fonctionne très bien.

      Merci pour ce Plug-In

    Répondre à ce message

  • 3

    Bonjour,

    j’ai un soucis lors de la suppression d’un article qui a déjà été noté (voir en bas de la page http://www.biotechno.fr pour un exemple).

    En effet, la notation reste enregistrée même si l’article n’existe plus.

    En l’occurrence, le système de notation m’a permis de repérer un article qui décrivait un site internet. Puisque le système de notation permet d’évaluer les publications du site j’ai trouvé anormal qu’un site extérieur puisse être placé dans ces notations qui n’ont rien a voir. J’ai donc supprimé l’article en replaçant sont contenu dans la description du Site (indexation d’un nouveau Site internet en lieu et place d’un Article).

    Ma question est donc la suivante : comment je peux supprimer cette ligne vide dans le Top-Ten (ligne vide qui, si on attend que les notations évoluent, disparaîtra d’elle-même, mais bon !) ?

    Bien cordialement,

    • Exacte, il s’agit d’un bug... et la ligne ne devrait pas disparaitre si la note de cet article est forte...

      Il faut rajouter {statut=publie} dans le fichier modeles/notation_topten.html pour se limiter aux articles publiés...

      <BOUCLE_not(NOTATIONS_ARTICLES){par note_ponderee}{inverse}{0,#ENV{max,10}}>

      devient :

      <BOUCLE_not(NOTATIONS_ARTICLES){statut=publie}{par note_ponderee}{inverse}{0,#ENV{max,10}}>

      bien cordialement,
      jmv

    • Bonjour,

      et merci pour ce correctif fort simple en effet (je m’en veux de ne pas l’avoir trouvé moi-même d’ailleurs). Mais j’étais parti sur la manipulation directe sur les nouvelles tables du plugin dans la base de données ! Bon bref, je suis devenu un has been de SPIP maintenant ;’o( mais je m’en remettrai :o)

      encore merci,

    • En fait, il y a une jointure entre la table du plugin et la table des articles SPIP, ce qui autorise à faire une requête sur les attributs des articles lors d’un appel à une boucle sur la table des notations... et le {statut=publie} marche...

      (on pourrait faire la même chose avec d’autres attributs des articles : id_rubrique, id_secteur, lang...)

      facile ;-)

    Répondre à ce message

  • Bonjour.

    Utilisant la notation avec la version 1.9.3 je vous fait part d’un problème avec la dernière version 1.9.3

    Tout fonctionne mais dans la page « afficher les notes » et « paramétrages » en partie privée plusieurs textes qui n’ont rien à faire là s’affichent un peu partout sur la page.

    On retrouve :

    #Echo par debut_gauche#

    #Echo par gros_titre#

    #Echo par debut_cadre_couleur#

    #Echo par fin_cadre_couleur#

    #Echo par debut_droite#

    #Echo par debut_cadre_trait_couleur#

    #Echo par fin_cadre_trait_couleur#

    Si ca peu vous aider

    Merci

    Répondre à ce message

  • 1

    Bonjour,

    excellent plugin ma foi. J’ai cependant un petit soucis concernant la pondération.

    Je pense que le calcul de la pondération devrait prendre en compte une donnée variable importante : le nombre de vote maximal déjà atteint pour un article (en fait, prendre l’article ayant reçu le plus de vote sur le site et sortir le nombre de votes pour cet article).

    Il n’est en effet pas logique qu’un article ayant reçu un vote de 5 étoiles reste pondéré à une étoile alors que les articles du site n’ont, au maximum, que 3 ou 4 votes dans l’ensemble. La pondération figée comme elle l’est actuellement (puisqu’elle est soumise à un ligne de calcul et un coefficient de pondération décidé au départ) ne me semble pertinente que dans le cas où certains articles présenteraient d’office plusieurs dizaines de votes.

    Par contre, lorsque le nombre de vote maximal déjà atteint pour un article augmentera au cours du temps, il faudrai que le coefficient de pondération change.

    Est-ce que c’est possible de faire cela (je dois avouer être un peu nul en maths et encore plus en programmation) ?

    bien cordialement

    • Bonjour

      La note d’un article est en fait une moyenne : la moyenne de chaque votant. Or comme toute valeur mathématique (statistique), la moyenne a son domaine d’application... qui dépend de la nature des données et de ce qu’on mesure.

      La pondération doit permettre d’introduire ce type de considération : à partir de quand considère-t-on que le vote est fiable ? Ceci est indépendant du nombre de vote maximal mais est plus lié à la fréquentation du site : si votre fréquentation baisse, les nouveaux articles ne ratraperont jamais ceux écrit lors d’un pic de fréquentation... Le problème est donc assez complexe et une mise à jour de toutes les notes à chaque vote est assez lourde.

      Pour cela a été introduit le facteur de pondération modulable par l’administrateur (dans la partie privée). Ainsi, si comme vous le dites, votre site a au maximum 3 ou 4 votes, je vous conseille de mettre ce facteur à 3 ou 4. Du coup, un article ayant 1 vote de 5 aura une note de 3 ou 4...
      Charge à vous de modifier ensuite ce facteur en fonction de la fréquentation de votre site... afin qu’il reflète votre vision du classement.

      Un affichage des articles les plus notés reste possible grâce à la balise #NB de la table NOTATIONS_ARTICLES...

      Cordialement,
      jmv

    Répondre à ce message

  • 1

    Bonjour,

    J’ai installé ce plugin que je trouve très bien.
    J’ai tout de même une question. Je désire afficher un top des articles les mieux notés sur la page d’accueil (sommaire). Mais je n’ai pas envie d’utiliser la balise « topten » prévue car j’ai ma propre charte graphique.
    Je veux donc utilisé une boucle classique sur les articles :

    <B_articles_note>
    <BOUCLE_articles_note(ARTICLES) par note inverse 0,3 >
    #TITRE - #NOTE
    </BOUCLE_articles_note>
    </B_articles_note>

    Or ça ne donne rien, impossible d’afficher la note ou de trier par note.
    Auriez-vous la solution ?

    Merci

    Bas

    • Bonjour,

      La balise #NOTE est associée à la table NOTATION_ARTICLE. C’est donc sur celle-ci qu’il faut faire la boucle (en imbriquant avec une boucle sur les articles pour retenir le titre). La syntaxe correcte est donc :

      <B_articles_note>
      <BOUCLE_articles_note(NOTATIONS_ARTICLES) {par note} {inverse} {0,3} >
       <BOUCLE_article(ARTICLES){id_article}>
      #TITRE - #NOTE ou #NOTE_PONDEREE
       </BOUCLE_article>
      </BOUCLE_articles_note>
      </B_articles_note>

      Utiliser le filtre [(#NOTE|round)] pour avoir la note arrondie.

      Pour plus d’info, voir le code dans les fichiers du répertoire modele (notation_topten.html) du plugin.

      Cordialement,
      jmv

    Répondre à ce message

  • 1

    bonjour,

    serait-il possible de débrider le plugin ?

    Je dois simplifier le mode de vote ... le bridage par IP est bloquant dans ma démarche !

    Serait-il possible d’avoir plus d’informations sur les mécanismes afin de pouvoir faire évoluer le plugin ?

    • Bonjour,

      Le problème qui se pose est de ne permettre qu’un seul vote par utilisateur (sinon, rien n’empêche de voter plusieurs fois pour le même article : il suffit de rafraîchir la fenêtre après un vote). La seule information fournie par défaut est l’IP... ce qui peut poser problème si l’IP est flottante (on peut voter plusieurs fois mais il faut se déconnecter) ou si on est derrière un routeurs (plusieurs ordinateurs ont la même IP).

      Pour palier ce problème le plugin substitut l’identification par IP par celle de SPIP : les auteurs (ou visiteurs), ainsi 2 IP identiques mais avec des auteurs différents peuvent voter et chaque auteur ne vote qu’une seul fois.

      Par défaut, le plugin est bridé par l’authentification de SPIP ou par l’IP (si pas enregistré). Vous pouvez également limiter le vote aux seul personnes enregistré (visiteurs, auteur ou admin).

      On peut certes modifier l’authentification par IP (vers la ligne 63 de formulaire/notation.html pour prendre un premier vote à chaque clique : faire if (true) au lieu de if (spip_num_rows($res) == 0)) mais avec des risques de votes multiples ... et sur l’interprétation des votes...

      @+
      jmv

    Répondre à ce message

  • 2

    Bonjour, je suis « débutant » en SPIP et je souhaite intégrer ce plugin sur mon site.
    J’ai tout bien installé et au niveau de mon squelette article.html j’ai écrit ceci :

    (sans les guillemets évidemment et avec des acollades enfermant id_article)

    <"BOUCLE_note (ARTICLES) id_article">#NOTATION<"/BOUCLE_note">

    Mais lorsque j’affiche ma page et que je clique sur une des étoiles il ne se passe
    rien d’autre qu’une erreur javascript aparemment.

    Je ne comprends pas, pouvez-vous m’expliquer d’où vient mon erreur ?

    Merci d’avance. Cordialement

    • J’ai le même problème, ya t’il une solution

    • Bonjour,

      La syntaxe correcte est :

      <BOUCLE_note(ARTICLES){id_article}>#NOTATION</BOUCLE_note>

      Dans le fichier article.html, cette boucle est inutile : on utilise la boucle BOUCLE_article_principal existante. La balise #NOTATION s’utilise alors au même titre que #TITRE ou #LOGO_ARTICLE.

      Sinon, vérifiez que vous avez la dernière version du plugin (adaptée à votre SPIP). Vérifiez que votre squelette contient bien la balise #INSERT_HEAD (généralement dans inc-head.html), enfin assurez-vous qu’il n’y a qu’une seule balise #NOTATION pour un numéro d’article donné (on ne peut pas noter un article en deux endroits différents sur la même page, cela provoque une erreur js).

      Si le problème persiste, envoyez-moi un lien pour voir le résultat.

      @+
      jmv

    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