Karma de puntos de usuario: ¿es posible cobrar solo puntos de usuario por votos negativos?

8

Estoy usando los módulos User Points, User Karma, Vote Up / Down. Me pregunto si hay una manera de configurarlo para deducir solo los puntos de usuario cuando vota algo hacia abajo y no hacia arriba.

Similar al sistema de reputación de Stack Exchange: si vota algo, no queda atracado, pero si vota algo hacia abajo, obtiene puntos de reputación atracados.

Utilizando la configuración de Puntos de usuario de reputación -> Puntos de karma -> Costo de puntos de votante, solo puedo configurarlo para cobrar si vota, independientemente de la dirección de la votación. ¿Algunas ideas?

Nelson
fuente
Parece que tienes que hacerlo programáticamente. Compruebe si hay ganchos si el módulo proporciona alguno.
Codium
@drupality: No estoy de acuerdo, consulte mi respuesta para obtener detalles sobre por qué ...
Pierre.Vriens

Respuestas:

5

Agregar un módulo para anular la configuración de User Karma es sin duda una opción.

Otra posibilidad es usar Reglas y Voting_Rules para controlar su propia configuración para sumar y restar puntos de usuario.

Una vez habilitado, vaya a / admin / config / workflow / rules y "Agregar nueva regla". Configúrelo para reaccionar en el evento "Votos de usuario en un nodo".

Agregue la condición "Verificar el valor del voto" y, si es menor que 0, agregue una Acción a "Otorgar puntos a un usuario" pero hágalos puntos negativos.

Aquí hay una captura de pantalla de esta regla: ingrese la descripción de la imagen aquí

Opcionalmente, si desea utilizar el Karma del usuario en conjunto, en su lugar, puede reaccionar ante el evento de "Puntos otorgados al usuario" y probar las condiciones y anular cuando corresponda.

Brent
fuente
1

Para D7, recomiendo optar por una combinación de estos módulos alternativos, y de uso frecuente, para restar (o agregar) puntos de usuario cuando se rechaza algún nodo (o dicho voto negativo se elimina nuevamente, lo que también puede suceder ...):

A continuación se encuentran las reglas requeridas, para cada uno de estos casos (use la interfaz de usuario de reglas para importarlas en su propio sitio, después de habilitar los módulos requeridos mencionados anteriormente). Suposiciones hechas en estas reglas:

  • Usan un tipo de contenido con el nombre de la máquina article(adapte este nombre para que se ajuste al nombre de su propia máquina u omita esa Condición de reglas para habilitar cualquier tipo de contenido que pueda votarse).
  • El valor de un voto negativo coincide con " -1".

Votar a favor de un nodo

La siguiente regla restará -2 (otorgar -2) puntos de usuario para un voto negativo (al autor del nodo) ... Y también -1 punto de usuario para el votante:

{ "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"
        }
      }
    ]
  }
}

Cancelar el voto negativo a un nodo

La siguiente regla otorgará +2 (= eliminar -2) puntos de usuario para un voto negativo cancelado (al autor del nodo) ... Y también +1 punto de usuario para el votante:

{ "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"
        }
      }
    ]
  }
}

A pesar de que puede no ser evidente a partir de sólo la navegación por encima de las reglas exportadas, tenga en cuenta el description, operationy referencese utiliza en cada una de las transacciones en el punto de usuario.

Usando tales reglas, la configuración de cuánto cobrar por votos a favor y / o votos negativos es solo una cuestión de adaptar los valores de los puntos de usuario que se otorgarán (o eliminarán) utilizando la interfaz de usuario de reglas.

También tenga en cuenta el description, operationy se referenceutiliza en cada una de las transacciones de Puntos de usuario. Eso también mejorará los informes típicos de Puntos de usuario (a través de los diversos detalles agregados en las transacciones de puntos de usuario reales).

Usando el módulo Reglas condicionales , también puede consolidar estas reglas en una sola regla (lo que simplifica su mantenimiento).

Tarea : adapte las reglas que se muestran arriba para implementar algo similar a las recompensas en SE (= transfiera una cierta cantidad de Puntos de usuario de un usuario a otro).

PD: " si rechazas algo, obtienes puntos de reputación acoplados " (en SE) solo es cierto para las respuestas, no para las preguntas. Para refinar eso como usted quisiera, es solo una cuestión de agregar una Condición de Reglas adicional apropiada (por ejemplo, basada en un tipo de contenido).

Pierre.Vriens
fuente
Deje de escribir respuestas que comiencen "vea mi respuesta a esta otra pregunta". Si su respuesta a la otra pregunta resuelve el problema de esta pregunta, las publicaciones se cerrarán como duplicados entre sí. De lo contrario, la respuesta es tangencial, no responde la pregunta y debe eliminarse. Te daré tiempo para decidir qué quieres hacer antes de tomar las medidas apropiadas. De cualquier manera, este hábito de publicar respuestas largas a una pregunta, luego publicar respuestas a varias otras preguntas que lo señalen, se detendrá.
Clive
Para que quede más claro: las respuestas que son esencialmente indicadores de otras respuestas dadas a otras preguntas no son aceptables. Las respuestas deben adaptarse a la pregunta que se hace. Si la misma respuesta se aplica a dos preguntas, es probable que una pregunta esté duplicando la otra.
kiamlaluno
Merci a quien acaba de realizar el equivalente de " DownvoteWithdrawn " ...
Pierre.Vriens