Userpoints Karma - È possibile addebitare punti utente solo per i voti negativi?


8

Sto usando i moduli User Points, User Karma, Vote Up / Down. Mi chiedo se esiste un modo per configurarlo in modo da detrarre i punti utente solo quando voti qualcosa in basso e non in alto.

Simile al sistema di reputazione di Stack Exchange: se si vota qualcosa in alto, non si viene ancorati, ma se si vota qualcosa in basso si ottengono punti reputazione ancorati.

Utilizzando l'impostazione Punti reputazione utente -> Punti Karma -> Impostazione del costo dei punti elettori, sono in grado di configurarlo per l'addebito solo se voti, indipendentemente dalla direzione del voto. Qualche idea?


Sembra che tu debba farlo programmaticamente. Controllare i ganci se il modulo ne fornisce uno.
Codium,

@drupality: Non sono d'accordo, fare riferimento alla mia risposta per i dettagli sul perché ...
Pierre.Vriens,

Risposte:


5

L'aggiunta di un modulo per sovrascrivere le impostazioni dell'utente Karma è sicuramente un'opzione.

Un'altra possibilità è quella di utilizzare Rules e Voting_Rules per controllare le proprie impostazioni per l'aggiunta e la sottrazione di punti utente.

Una volta abilitato, vai su / admin / config / workflow / rules e "Aggiungi nuova regola". Impostalo su React on Event "Voti degli utenti su un nodo".

Aggiungi la condizione "Controlla il valore del voto" e se inferiore a 0 aggiungi un'azione a "Concedi punti a un utente" ma rendili negativi.

Ecco uno screenshot di questa regola: inserisci qui la descrizione dell'immagine

Facoltativamente, se si desidera utilizzare l'utente Karma insieme, è possibile invece reagire all'evento di "Punti utente assegnati" e testare le condizioni e sostituire, ove appropriato.


1

Per D7, consiglio di optare per una combinazione di questi moduli alternativi e spesso utilizzati per sottrarre (o aggiungere) punti utente quando un nodo viene votato verso il basso (o tale downvote viene rimosso di nuovo, cosa che può accadere anche ...):

Di seguito sono riportate le regole richieste, per ciascuno di questi casi (utilizzare l'interfaccia utente delle regole per importarle nel proprio sito, dopo aver abilitato i moduli richiesti sopra menzionati). Ipotesi fatte in queste regole:

  • Usano un tipo di contenuto con il nome della macchina article(adattare questo nome per adattarlo al proprio nome della macchina o omettere quella Condizione delle regole per abilitare qualsiasi tipo di contenuto su cui è possibile votare).
  • Il valore di un downvote corrisponde a " -1".

Downvote di un nodo

La regola seguente sottraerà -2 (concedi -2) punti utente per un downvote (all'autore del nodo) ... E anche -1 punti utente per l'elettore:

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

Annulla il downvote di un nodo

La regola seguente garantirà +2 (= rimuovi -2) punti utente per un downvote annullato (all'autore del nodo) ... E anche +1 punto utente per l'elettore:

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

Anche se può non essere evidente da solo la navigazione delle regole esportate sopra, notare la description, operatione referenceusato in ciascuna delle operazioni punto di utilizzo.

Utilizzando tali regole, la configurazione di quanto addebitare per i voti positivi e / o negativi è solo una questione di adattamento dei valori dei punti utente da concedere (o rimuovere) utilizzando l'interfaccia utente delle regole.

Da notare anche la description, operatione referenceutilizzato in ciascuna delle transazioni Punti Utente. Ciò migliorerà anche i tipici rapporti dei punti utente (tramite i vari dettagli aggiunti nelle transazioni dei punti utente effettivi).

Utilizzando il modulo Regole condizionali , è possibile consolidare anche queste regole in un'unica regola (che semplifica la loro manutenzione).

Compiti a casa : adatta le regole mostrate sopra per implementare qualcosa di simile ai doni su SE (= trasferisci una quantità di punti utente da un utente a un altro).

PS: " se voti qualcosa in basso ottieni punti reputazione ancorati " (su SE) è vero solo per le risposte, non per le domande. Per perfezionare ciò che vorresti fosse, è solo una questione di aggiungere un'opportuna Condizione aggiuntiva alle Regole (ad es. Basata su un tipo di contenuto).


Smetti di scrivere le risposte che iniziano "vedi la mia risposta a questa altra domanda". Se la tua risposta all'altra domanda risolve il problema su questa domanda, i post verranno chiusi come duplicati l'uno dell'altro. In caso contrario, la risposta è solo tangenziale, non risponde alla domanda e deve essere eliminata. Ti darò il tempo di decidere cosa vuoi fare prima di intraprendere un'azione appropriata da solo. Ad ogni modo, l'abitudine di pubblicare lunghe risposte a una domanda, quindi di pubblicare risposte a molte altre domande che puntano ad essa, si fermerà.
Clive

Per chiarire: le risposte che sono essenzialmente dei puntatori ad altre risposte fornite ad altre domande non sono accettabili. Le risposte devono essere personalizzate per la domanda che viene posta. Se la stessa risposta si applica a due domande, è probabile che una domanda stia duplicando l'altra.
kiamlaluno

Merci a cui ha appena eseguito l'equivalente di " DownvoteWithdrawn " ...
Pierre.Vriens,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.