Comment implémenter un système basé sur la réputation avec des badges dans Drupal similaire aux sites StackExchange?

16

Gagner des badges sur StackExchange est, bien, amusant. Mais à part cela, il favorise une interaction de qualité des utilisateurs et aide à éliminer le spam (je n'ai jamais vu de spam sur le site).

J'ai un site Web communautaire avec environ 500 utilisateurs actifs, mais les spammeurs commencent à devenir plus prolifiques.

Je voudrais un moyen de rendre le site plus engageant tout en favorisant la même qualité d'interactivité.

Comment recommanderiez-vous de mettre en place un bon système de réputation , ainsi qu'un système de réalisation des objectifs ?

blue928
la source
Concernant les spammeurs mentionnés dans la question d'origine: ils seront toujours là. Ces spammeurs peuvent donc être traités en suivant la suggestion faite dans la réponse donnée par Free Radical sur drupal.stackexchange.com/questions/121382/… .
gpruim

Réponses:

17

Il y a le module User Points et le module User Badges , bien que la version 7.x des User Badges ne soit pas encore adaptée à la production (au 4 juin 2012).

Heureusement, User Points s'intègre au module Rules , ce qui vous permet de personnaliser considérablement la façon dont les utilisateurs gagnent (ou éventuellement perdent) des points.

Il existe également une collection de modules contribués pour les points utilisateurs de stabilité variable. Vous pouvez certainement configurer des choses incroyables avec ces modules, mais assurez-vous de tester soigneusement votre implémentation - bien que les modules soient bien écrits et assez stables, il y a encore beaucoup de choses qui peuvent mal tourner, alors assurez-vous de vérifier que tout fonctionne correctement.

Patrick Kenny
la source
11

Pour les badges, il y a le module Réalisations .

Le module Réalisations offre la possibilité de créer des réalisations et des badges similaires aux systèmes vus sur Xbox 360, Playstation 3, Foursquare, Gowalla, GetGlue, etc. Pour un site Drupal, cela pourrait signifier commenter un certain nombre de fois, démarrer un sujet de forum, visiter le site tous les jours de la semaine ou tout autre élément pouvant être suivi et codé.

stevepurkiss
la source
1

Votre question se compose en réalité de 2 parties, c'est-à-dire sur la façon de mettre en œuvre:

  • un système de réputation , qui est comme une évaluation par plusieurs utilisateurs d'un utilisateur spécifique.
  • un système de réalisation d'objectifs , ce qui revient à récompenser un utilisateur après avoir accompli diverses tâches, défis, etc.

Lisez la suite pour plus de détails sur la façon d'implémenter chacun des deux systèmes.

Système de réalisation des objectifs

Il existe généralement 2 modules parmi lesquels vous pouvez choisir pour ce type de système, à savoir:

  1. Le module Réalisations , comme déjà suggéré dans une autre réponse. Ce module s'appuie fortement sur un codage personnalisé pour gérer de nombreuses fonctions.

  2. Le module Objectifs (Divulgation: j'en suis le responsable), qui peut être utilisé pour inciter à quoi que ce soit sur votre site, comme voter, partager du contenu, créer des relations, etc.

    Les objectifs et les tâches sont mis en œuvre à l'aide d'entités champables. Voici quelques exemples de tâches à accomplir:

    • Connectez-vous au site une fois par jour pendant trois jours consécutifs.
    • Publiez un certain nombre de nœuds des types de contenu sélectionnés.
    • Se connecter avec un ami sur le site.
    • Etc.

    Vous pouvez personnaliser vos objectifs via "Gérer les champs" et / ou "Gérer l'affichage". Tout peut être fait uniquement avec les fonctionnalités de création de site (pas de code personnalisé impliqué), bien que des crochets soient disponibles pour l'intégrer également dans le codage personnalisé. Le module Goals est donc construit autour de la configuration de l'interface d'administration. De plus, les objectifs et les tâches du module Objectifs sont des entités modifiables, vous avez donc la possibilité d'ajouter des champs supplémentaires et d'incorporer ces entités dans les vues . En utilisant le Goals Extrassous-module, il s'intègre également au module User Points .

    Rendez-vous sur la vidéo Objectifs qui comprend:

    • une introduction générale au module.
    • une démonstration pour l'installer, le configurer et l'utiliser.
    • des exemples de la façon dont il utilise les modules de règles pour faire sa magie (c'est-à-dire pour suivre les progrès d'un utilisateur pour atteindre les différents objectifs).

Système de réputation

En utilisant le module Réponses (Divulgation: j'en suis (co) mainteneur), vous pouvez " mettre en place un bon système de réputation " (comme dans votre question). Voici quelques détails à ce sujet (à partir de sa page de projet):

Answers permet la mise en place d'un système de questions / réponses dans un site Drupal. Les utilisateurs peuvent publier des questions et d'autres utilisateurs peuvent y répondre.

Rendez-vous sur sa page de projet pour plus de détails. Visitez son site de démonstration pour une démonstration (en mode lecture seule pour les utilisateurs anonymes) de listes basées sur des vues de:

Le module "core" Answers active les types de contenu Question et Réponse , tandis que les réponses sont affichées sous la question à laquelle elles se rapportent. Ces 2 types de contenu sont modifiables, vous pouvez gérer leurs affichages, etc.

Utilisez ses sous-modules pour activer certaines fonctionnalités (en fonction des exigences d'un site), c'est-à-dire:

  • Réponses Meilleure réponse , qui permet de marquer l'une des réponses à une question spécifique comme la meilleure réponse (acceptée) (pour afficher les coches bleues à gauche de chaque réponse, et qui est remplacée par une coche verte lorsqu'une réponse est marquée comme meilleure réponse).
  • Thème des réponses , qui transforme l'affichage vanillé (plutôt ennuyeux) d'une question (et ses réponses connexes endessous), en une apparence plus attrayante. Tels que la bulle orange qui est ajoutée autour de la question (pour mieux la mettre en valeur).
  • Notification de réponses , pour permettre aux utilisateurs connectés de s'abonner aux questions sélectionnées, afin qu'ils reçoivent des notifications (à l'aide de la pile de messages ) lorsque les questions reçoivent des réponses.
  • Answers Voting , pour implémenter un système de vote ascendant ou descendant de Questions et / ou Réponses (qui utilise lemodule Taux ).
  • Répond aux Userpoints , pour augmenter ou diminuer les " points de réputation " (qui utilisent lemodule Userpoints ) sur des événements tels que le voteà la hausse ou à la baissesur une question ou une réponse, ou marquer une réponse comme la " meilleure réponse ".

Une grande partie de sa «logique métier» est implémentée via toutes sortes de règles configurables (en utilisant le module Rules ). Par exemple, si vous n'êtes pas d'accord avec les règles prédéfinies sur le nombre de «points d'utilisateur» accordés à une question (ou réponse) votée (ou rétrogradée), vous utilisez simplement l'interface utilisateur des règles pour régler la quantité de ces points à vos besoins. Par exemple: les questions de vote en aval devraient-elles vraiment être libres (c'est-à-dire: le votant en aval devrait-il perdre des points en le faisant?).

Par souci d'exhaustivité, voici une règle (au format d'exportation des règles), qui est utilisée pour attribuer des points «+15» à l'auteur d'une réponse , ainsi que des points «+2» pour l'utilisateur qui marque cette réponse comme acceptée (= l'auteur de la Question ), alors que la marquer comme telle se fait en marquant cette Réponse comme 'Meilleure réponse' (en utilisant le module Flag ):

{ "rules_flag_answers_best_answer" : {
    "LABEL" : "flag_answers_best_answer",
    "PLUGIN" : "reaction rule",
    "OWNER" : "rules",
    "TAGS" : [ "answers" ],
    "REQUIRES" : [ "rules", "userpoints_rules", "flag" ],
    "ON" : { "flag_flagged_best_answer" : [] },
    "IF" : [
      { "NOT data_is" : { "data" : [ "flagging-user" ], "value" : [ "flagged-node:author" ] } }
    ],
    "DO" : [
      { "userpoints_action_grant_points" : {
          "user" : [ "flagged-node:author" ],
          "points" : "15",
          "tid" : "0",
          "entity" : [ "" ],
          "operation" : "addPoints",
          "display" : 1,
          "moderate" : "default"
        }
      },
      { "userpoints_action_grant_points" : {
          "user" : [ "flagging-user" ],
          "points" : "2",
          "tid" : "0",
          "entity" : [ "" ],
          "operation" : "addPoints",
          "display" : 1,
          "moderate" : "default"
        }
      }
    ]
  }
}
Pierre.Vriens
la source