Userpoints Karma - Est-il possible de ne facturer des points utilisateurs que pour les votes négatifs?

8

J'utilise les modules User Points, User Karma, Vote Up / Down. Je me demande s'il existe un moyen de le configurer pour ne déduire que des points utilisateur lorsque vous votez quelque chose en bas et non en haut.

Semblable au système de réputation de Stack Exchange: si vous votez pour quelque chose, vous n'êtes pas ancré, mais si vous votez quelque chose vers le bas, vous obtenez des points de réputation ancrés.

En utilisant le paramètre Reputation User Points -> Karma Points -> Voter Points Cost, je ne peux le configurer pour facturer que si vous votez, quelle que soit la direction du vote. Des idées?

Nelson
la source
Il semble que vous devez le faire par programme. Vérifiez les crochets si le module en fournit.
Codium
@drupality: Je ne suis pas d'accord, référez-vous à ma réponse pour savoir pourquoi ...
Pierre.Vriens

Réponses:

5

Ajouter un module pour remplacer les paramètres de User Karma est certainement une option.

Une autre possibilité consiste à utiliser des règles et des règles de vote pour contrôler vos propres paramètres pour ajouter et soustraire des points utilisateur.

Une fois activé, allez dans / admin / config / workflow / rules et "Add New Rule". Configurez-le pour réagir à l'événement "L'utilisateur vote sur un nœud".

Ajoutez la condition "Vérifier la valeur du vote" et si moins de 0 ajoutez une Action à "Accorder des points à un utilisateur" mais faites-en des points négatifs.

Voici une capture d'écran de cette règle: entrez la description de l'image ici

Facultativement, si vous souhaitez utiliser le karma utilisateur en conjonction, vous pouvez plutôt réagir à l'événement de "l'utilisateur s'est vu attribuer des points" et tester les conditions et remplacer le cas échéant.

Brent
la source
1

Pour D7, je recommande d'opter pour une combinaison de ces modules alternatifs, et souvent utilisés, pour soustraire (ou ajouter) des points utilisateur lorsque certains nœuds sont rejetés (ou qu'un tel downvote est à nouveau supprimé, ce qui peut également arriver ...):

Vous trouverez ci-dessous les règles requises, pour chacun de ces cas (utilisez l'interface utilisateur de règles pour les importer dans votre propre site, après avoir activé les modules requis mentionnés ci-dessus). Hypothèses formulées dans ces règles:

  • Ils utilisent un type de contenu avec le nom de la machine article(adaptez ce nom à votre propre nom de machine ou omettez cette condition de règles pour l'activer pour tout type de contenu pouvant faire l'objet d'un vote).
  • La valeur d'un downvote correspond à " -1".

Dévoter un nœud

La règle ci-dessous soustrait -2 (octroie -2) points utilisateurs pour un downvote (à l'auteur du nœud) ... ET aussi -1 point utilisateur pour l'électeur:

{ "rules_votedown_node" : {
    "LABEL" : "votedown_node",
    "PLUGIN" : "reaction rule",
    "OWNER" : "rules",
    "REQUIRES" : [ "rules", "voting_rules", "userpoints_rules" ],
    "ON" : { "voting_rules_insert_node" : [] },
    "IF" : [
      { "node_is_of_type" : {
          "node" : [ "node" ],
          "type" : { "value" : { "article" : "article" } }
        }
      },
      { "voting_rules_condition_check_vote_value" : { "vote" : [ "vote" ], "value" : "-1" } }
    ],
    "DO" : [
      { "userpoints_action_grant_points" : {
          "user" : [ "node:author" ],
          "points" : "-2",
          "tid" : "0",
          "entity" : [ "" ],
          "description" : "Receive downvote to [node:type-name] \u0022[node:title]\u0022",
          "operation" : "DownvoteReceived",
          "reference" : "By uid=[vote:uid], for [node:type-name] to q=\u003Ca href=\u0022\/node\/[node:nid]\u0022\u003E[node:title]\u003C\/a\u003E",
          "display" : "1",
          "moderate" : "default"
        }
      },
      { "userpoints_action_grant_points" : {
          "user" : [ "vote:user" ],
          "points" : "-1",
          "tid" : "0",
          "entity" : [ "" ],
          "description" : "Issue downvote to [node:type-name] \u0022[node:title]\u0022",
          "operation" : "DownvoteIssued",
          "reference" : "From uid=[node:author:uid], for [node:type-name] to q=\u003Ca href=\u0022\/node\/[node:nid]\u0022\u003E[node:title]\u003C\/a\u003E",
          "display" : "1",
          "moderate" : "default"
        }
      }
    ]
  }
}

Annuler le downvote d'un noeud

La règle ci-dessous accordera +2 (= supprimer -2) points utilisateurs pour un downvote annulé (à l'auteur du nœud) ... ET également +1 point utilisateur pour l'électeur:

{ "rules_votedown_node_cancel" : {
    "LABEL" : "votedown_node_cancel",
    "PLUGIN" : "reaction rule",
    "OWNER" : "rules",
    "REQUIRES" : [ "rules", "voting_rules", "userpoints_rules" ],
    "ON" : { "voting_rules_delete_node" : [] },
    "IF" : [
      { "node_is_of_type" : {
          "node" : [ "node" ],
          "type" : { "value" : { "article" : "article" } }
        }
      },
      { "voting_rules_condition_check_vote_value" : { "vote" : [ "vote" ], "value" : "-1" } }
    ],
    "DO" : [
      { "userpoints_action_grant_points" : {
          "user" : [ "node:author" ],
          "points" : "2",
          "tid" : "0",
          "entity" : [ "" ],
          "description" : "Cancel downvote to [node:type-name] \u0022[node:title]\u0022",
          "operation" : "DownvoteCancelled",
          "reference" : "By uid=[vote:uid], for [node:type-name] to q=\u003Ca href=\u0022\/node\/[node:nid]\u0022\u003E[node:title]\u003C\/a\u003E",
          "display" : "1",
          "moderate" : "default"
        }
      },
      { "userpoints_action_grant_points" : {
          "user" : [ "vote:user" ],
          "points" : "1",
          "tid" : "0",
          "entity" : [ "" ],
          "description" : "Withdraw downvote to [node:type-name] \u0022[node:title]\u0022",
          "operation" : "DownvoteWithdrawn",
          "reference" : "From uid=[node:author:uid], for [node:type-name] to q=\u003Ca href=\u0022\/node\/[node:nid]\u0022\u003E[node:title]\u003C\/a\u003E",
          "display" : "1",
          "moderate" : "default"
        }
      }
    ]
  }
}

Même si elle ne peut pas être évident de simplement parcourir les règles ci - dessus exportées, notez le description, operationet referenceutilisé dans chacune des transactions aux points de l' utilisateur.

En utilisant de telles règles, la configuration du montant à facturer pour les votes positifs et / ou négatifs consiste simplement à adapter les valeurs des points utilisateur à accorder (ou à supprimer) à l'aide de l'interface utilisateur des règles.

Notez également le description, operationet referenceutilisé dans chacune des transactions de points d'utilisateur. Cela améliorera également les rapports typiques de points utilisateurs (via les divers détails ajoutés dans les transactions réelles de points utilisateurs).

À l'aide du module Règles conditionnelles, vous pouvez également consolider ces règles dans une seule règle (ce qui simplifie leur maintenance).

Devoirs : adaptez les règles ci-dessus pour implémenter quelque chose de similaire aux primes sur SE (= transférer une certaine quantité de points utilisateur d'un utilisateur à un autre).

PS: " si vous votez contre, vous obtenez des points de réputation " (sur SE) n'est vrai que pour les réponses, pas pour les questions. Pour affiner cela comme vous le souhaiteriez, il suffit d'ajouter une condition de règles supplémentaire appropriée (par exemple, basée sur un type de contenu).

Pierre.Vriens
la source
Veuillez cesser d'écrire des réponses commençant par "voir ma réponse à cette autre question". Si votre réponse à l'autre question résout le problème sur cette question, les messages seront fermés en tant que doublons les uns des autres. Sinon, la réponse est simplement tangentielle, ne répond pas à la question et doit être supprimée. Je vous laisse le temps de décider ce que vous voulez faire avant de prendre moi-même les mesures appropriées. Quoi qu'il en soit, cette habitude de publier de longues réponses à une question, puis de publier des réponses à plusieurs autres questions qui y renvoient, va cesser.
Clive
Pour être plus clair: les réponses qui sont essentiellement des pointeurs vers d'autres réponses données à d'autres questions ne sont pas acceptables. Les réponses doivent être adaptées à la question posée. Si la même réponse s'applique à deux questions, il est probable qu'une question répète l'autre.
kiamlaluno
Merci à qui vient de réaliser l'équivalent de " DownvoteWithdrawn " ...
Pierre.Vriens