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:
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.
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 Extras
sous-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"
}
}
]
}
}