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

  • 3

    Par rapport à la documentation il y a des « choses » qui ont disparu dont la balise #NOTATION ... :-))

    ou préciser que #NOTATION_ETOILE{n,id} prend 2 paramètres : n qui est la note (récupérée par la valeur de #NOTE par exemple) et id qui est une combinaison du type article#ID_ARTICLE ou auteur#ID_AUTEUR

    Le gros soucis c’est l’inclusion de squelettes !!!

    Exemple si dans article.html j’ai un :

    <INCLURE{fond=inc-art}{id_article}>

    et dans inc-art.html

    <BOUCLE_not(NOTATIONS ARTICLES){id_article}>
    	[(#NOTATION_ETOILE{#NOTE,article#ID_ARTICLE})]
    </BOUCLE_not>

    Ca ne fonctionne pas (ou mal). Cause l’#INSERT_HEAD pourtant présent dans article.html, après calcul ne contient pas les éléments suffisants... encore moins pour mettre le formulaire et c’est normal quand on regarde la façon dont est calculé l’#INSERT_HEAD... il fait un test qui est forcément faux lorsque #FORMULAIRE_NOTATION n’est pas utilisé !!! :((

    Je propose de supprimer ou de modifier le test ligne 14 dans notation_affichage_final de notation_pipeline.php ou de rajouter un <div class="formulaire_notation dans notation_fonctions.php... au choix. D’ailleurs les balises input qui se baladent toutes seules ... :((

    PS : Pour s’en sortir sans code php il suffit de mettre cela dans le squelette (les div sont nécessaires) :

    <div class="formulaire_notation">
    #NOTATION_ETOILE{#NOTE,article#ID_ARTICLE}
    </div>

    Joli plugin néanmoins ;-)

    • Chris, ne t’affole pas trop encore, je suis en train de le recasser une nouvelle fois...

      Merci pour ta précision sur affichage final, je n’avais pas fait attention qu’il faut des js en dehors du formulaire, je corrigerai dans la foulée.

      En ce moment, la version de dev n’est plus compatible 1.9.2 (il faut utiliser les zips fournis pour ça). Je suis en train de transformer le plugin pour utiliser les fonctions de SPIP 2.0 et particulièrement pour rendre générique la notation quelque soit l’objet noté (pour l’instant, on peut noter les articles, comme le signale cet article, et les forums (comme ne le dit pas l’article, qui furent ajoutés par b_b), mais va faire bien mieux... On pourra noter une table (KIKOULOL) tiens, pourquoi pas !

    • Je ne suis pas affolé... je l’utilise avec SPIP 2.0 pour un site déjà en ligne dont je peux donner l’url en privé (pas de pub ici).
      Et j’en suis fort satisfait... pour le moment :)

    • Voilà qui est fait en version 0.6, décrit dans l’article Notation d’éléments SPIP.

    Répondre à ce message

  • Nickel ;)
    Çà fonctionne !!
    MERCI ET BONNE CONTINUATION

    Répondre à ce message

  • 2

    Bonjour,
    j’ai un petit soucis, un message d’erreur apparait :

    Fatal error : Call to undefined function sql_countsel() in notation.php on line 54

    ps : Spip 1.9.2 notation_192(v0.4) installer et paramétré avec #INSERT_HEAD dans inc-head.html. J’utilise le squelette Iensp et la balise #NOTATION dans article.html.
    La balise #NOTATION_ETOILE5 fonctionne.

    Merci d’avance

    • Bonjour,
      La fonction sql_countsel n’apparait que dans la v.1.9.3... J’ai placé une ancienne version en téléchargement qui devrait mieux marcher.

      @+

    • Bonjour, je viens de tester la nouvelle ancienne version et les étoiles s’affiches, mais il ne charge pas les fonctions javascripts, j’ai pourtant mis #INSERT_HEAD dans la tête.

      -  je suis avec SPIP 1.9.2d
      -  J’ai testé avec cfg activé et désactivé

      En plus le plugin me blog sur la page plug-in du panneau d’administration.
      Merci.

    Répondre à ce message

  • 5

    Bonjour.

    J’ai tenté l’installation de votre plugin sous 1.9.2d en local (XAMPP), sur base déjà existante avec d’autres plugins (Agenda pour SPIP 1.9.2/Recherche Etendue/Widget Calendrier)

    Installation réussie : création des 2 tables (spip_notation/spip_notation_articles)

    Le paramétrage semble OK : accessibilité à tous.

    Mon squelette est un squelette personnalisé, placé dans un répertoire de squelettes. Le #INSERT_HEAD est bien défini et placé entre les balise <head></head>.

    Je place ma balise #NOTATION dans une Boucle ARTICLE toute simple :

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

    Résultat :

    « Fatal error : Call to undefined function : sql_countsel() in C :\Program Files\xampp\htdocs\projets\internet\plugins\notation_192\balise\notation.php on line 54 »

    La désactivation et réactivation progressive des autres plugins ne change pas le comportement du plugin « Notation »

    A noter que la boucle

    <BOUCLE_notation(ARTICLES){id_article}>
    	#NOTATION_ETOILE{5}
    	#NOTATION
    </BOUCLE_notation>

    m’affiche les 5 étoiles colorées, mais impossible de cliquer/valider un vote, rien ne se passe.

    J’ai toujours le message

    « Fatal error : Call to undefined function : sql_countsel() in C :\Program Files\xampp\htdocs\projets\internet\plugins\notation_192\balise\notation.php on line 54 »

    qui apparaît

    J’ai testé en étant loggué en tant qu’administrateur/simple visiteur, rien n’y fait. Les tables spip_notation et spip_notation_articles sont vides.

    Une piste ?

    • J’ai le même problème avec ma SPIP 1.9.2d [11132] et la version 0.4 du plugin.
      #NOTATION est bien dans une boucle article, j’ai le #INSERT_HEAD dans le head (en dur ou via le couteau suisse).

      Comme autre plugin, j’ai le Couteau Suisse v1.7.18.03 et Article PDF v0.1
      Désactiver ces plugins ne change rien au message d’erreur Call to undefined function : sql_countsel() ...

      Si quelqu’un sait comment résoudre ce problème...

    • Bonjour,

      Installez le plugin CFG pour résoudre le problème.

      ++

    • Frédéric

      Merci, cela a résolu le problème ;)

    • Bonjour,

      J’ai le même message d’erreur que ci dessus, bien que le plugin CFG soit installé.

      version Spip :1.9.2d
      version plugin : 0.4 (192)
      version CFG : 1.0.2
      Squelette Sarka spip (non-plugin)

      Pouvez vous m’aider ?
      Merci

    • Salut,

      Personne n’a d’idées ? c’est dommage, j’aimerai bien utiliser ce plugin !!

    Répondre à ce message

  • 1
    Bisontouffu

    Bonjour,

    J’ai installé votre plugin et cela fonctionne très bien sur mon site.

    Une question cependant : est-il possible de jouer sur la taille des étoiles ? C’est-à-dire que le format des étoiles me convient bien à certains endroits de mes pages et pas à d’autres. Donc, y a-t-il une possibilité de filtre à la balise #NOTATION_ETOILE du genre image_reduire ? (j’ai essayé et cela ne marche pas...)

    Merci pour votre réponse.

    • Bonjour,
      Il n’y a pas possibilité de « filtrer » la taille des étoiles, cependant, vous pouvez utilser l’attribut width et height dans le css, en plaçant votre note dans une division particulière :

      <div class=petite_note>#NOTATION_ETOILE</div>

      et dans le css

      .petite_note img
      { width:10px;
        height:10px;
      }

      Ainsi, suivant le squelette utilisé, la taille changera...

      @+

    Répondre à ce message

  • 1
    François

    Bonjour,

    j’ai lu la procédure et l’ensemble des contributions, pourtant, impossible de fonctionner chez moi avec un message :

    Fatal error : Call to undefined function sql_countsel() in /www/news/plugins/notation_192/balise/notation.php on line 54

    Une explication ?
    Merci

    François

    • François

      Sorry, j’avais pas vu la question précédente de ce jour, et j’ai le même souci.

    Répondre à ce message

  • 1

    hello
    merci pour ce plugin !
    je viens de l’installer sur un spip 1.9.2d.
    dans le squelette de la dist, j’ai ajouté #NOTATION. Ensuite en frontoffice je vote pour mon article, ça a l’air de marcher mais quelquesoit la note que je donne à l’article, il n’y a qu’une seule étoile qui est colorée après le vote. Ais-je raté un épisode ? c’est pas la moyenne des notes données qui défini le nombre d’étoiles colorées ?

    • oups, je me réponds à moi-même... en fait j’avais zappé la partie configuration du plugin qui explique tout...(notamment la pondération)

      et tout fonctionne très bien.

      désolée pour ces messages inutile...

    Répondre à ce message

  • 2

    Bonjour,

    Je souhaiterais pouvoir afficher la note avec la balise #NOTATION mais sans permettre de noter (donc sans le formulaire et le rollover).

    J’ai bien essayé avec #NOTATION_ETOILE#NOTE mais le problème c’est que #NOTE n’est pas facilement accessible avec des boucles complexes alors qu’il n’y aucun problème avec #NOTATION.

    Auriez-vous une solution ?

    Cdlt,

    Bas

    • Bonjour,

      Pour utiliser la balise #NOTE :

      <BOUCLE_note(NOTATIONS_ARTICLES){id_article}>
        #NOTATION_ETOILE{#NOTE}
      </BOUCLE_note>

      @+

    • Bonjour,

      Merci pour la réponse.
      J’ai une autre question. Dans le code qui va suivre la balise #INTRODUCTION est vide dans le resultat affiché alors que les autres balises sont correctes. Quelqu’un sait-il pourquoi ?

      <B_articles_selection_2>	
      												<BOUCLE_articles_selection_2(ARTICLES) {id_rubrique} {doublons} {par soustitre} {inverse} {par hasard} {0,3} {id_secteur==15} {logo} >
      							<B_articles_sel_note0>
      								<BOUCLE_articles_sel_note0(NOTATIONS_ARTICLES) {id_article} >
      									#URL_ARTICLE
      #TITRE
      #CHAPO
      #LOGO_ARTICLE
      #INTRODUCTION
      #NOTATION_ETOILE{#NOTE_PONDEREE}</div>
      								</BOUCLE_articles_sel_note0>
      							</B_articles_sel_note0>
      													<//B_articles_sel_note0>
      													</BOUCLE_articles_selection_2>
      				</B_articles_selection_2>	

      Merci !

      Bas

    Répondre à ce message

  • 1

    Bonjour,

    J’ai installé ce magnifique plugin il y a un bout de temps.

    Mais apparemment il n’est pas compatible avec certains autres plugins.

    Par exemple, quand j’essaie d’activer Notation des articles, Agenda pour SPIP 1.9.2, Activer le pluginSPIP-Listes et Widget Calendrier ça ne marche pas. Mais, sans Notation des articles ça fonctionne !

    J’ai pas envie de perdre toutes mes notations d’articles, et surtout, à ma connaissance il n’y a pas d’autres plugins de notation à la hauteur de celui-là.

    Y a-t-il un moyen d’arranger la compatibilité entre ces plugins ?

    Merci.
    a+

    • Bonjour,

      Quels sont les symptômes et en activant les plugins un par un, quel est celui incriminé ?
      Personnellement, j’ai activé les quatre plugin sur un site en local, sans que cela ne pose problème...

      @+

    Répondre à ce message

  • 1

    Très bon ce plugin. Une chose serait particulièrement pratique : utiliser ajax lors du vote afin de ne pas avoir à recharger toute la page mais seulement le bloc concernant la notation.

    Cela serait non seulement plus pratique pour l’utilisation sur des pages assez lourdes, mais permettrait surtout d’avoir une page avec la possibilité de noter plusieurs éléments. C’est le cas sur un site que je réalise sur lequel j’aimerais que les visiteurs puissent noter rapidement et en les comparant plusieurs articles.

    Avez-vous une idée de comment je pourrais faire ?

    Merci beaucoup.

    • Bonjour,

      C’est une question à laquelle j’ai déjà réfléchi... Il faut connaître un peu JQuery et sa composante Ajax... J’ai bien quelques idée, mais pas vraiment de temps pour les mettre en pratique...

      Peut-être dans une prochaine version...

    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