ユーザーポイントカルマ-反対票に対してのみユーザーポイントを請求することは可能ですか?


8

ユーザーポイント、ユーザーカルマ、投票アップ/ダウンモジュールを使用しています。賛成ではなく反対に投票した場合にのみユーザーポイントを差し引くように構成できる方法があるのでしょうか。

Stack Exchangeのレピュテーションシステムに似ています。賛成票を投じてもドッキングされませんが、反対票を投じると評判ポイントがドッキングされます。

評判ユーザーポイント->カルマポイント->投票者ポイントコストの設定を使用すると、投票の方向に関係なく、投票した場合にのみ課金するように構成できます。何か案は?


プログラムで行う必要があるようです。モジュールがフックを提供するかどうかを確認します。
Codium 2011

@drupality:私は同意しません。理由の詳細については私の回答を参照してください...
Pierre.Vriens 16/07/18

回答:


5

ユーザーKarmaの設定を上書きするモジュールを追加することは確かに1つのオプションです。

もう1つの可能性は、RulesVoting_Rulesを使用して、ユーザーポイントを加算および減算するための独自の設定を制御することです。

有効にしたら、/ admin / config / workflow / rulesに移動して「新しいルールを追加」します。イベント「ユーザーがノードに投票する」に反応するように設定します。

「投票の値を確認する」という条件を追加し、0未満の場合は「ユーザーにポイントを付与する」にアクションを追加しますが、マイナスのポイントにします。

このルールのスクリーンショットは次のとおりです。 ここに画像の説明を入力してください

オプションで、ユーザーKarmaを併用したい場合は、代わりに「ユーザーにポイントが付与されました」のイベントに反応し、条件をテストして、必要に応じてオーバーライドできます。


1

D7の場合は、これらの代替モジュールを組み合わせて使用​​することをお勧めします。いくつかのノードが反対票を投じられたときに、ユーザーポイントを減算(または追加)するモジュールが使用されることをお勧めします(または、そのような反対投票が再度削除されます。

以下は、これらの各ケースに必要なルールです(上記の必要なモジュールを有効にした後、ルールUIを使用して独自のサイトにインポートします)。これらのルールで行われた仮定:

  • 彼らはマシン名付きのコンテンツタイプを使用しますarticle(この名前を自分のマシン名に合うように適合させるか、投票できるすべてのコンテンツタイプに対して有効にするためにそのルール条件を省略します)。
  • 反対票の値は「-1」と一致します。

ノードに反対投票

以下のルールが-2(グラント-2)(ノードの作者に)downvoteためのユーザポイントを減算...うAND有権者のためのユーザポイントをも-1:

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

ノードへの反対投票をキャンセルする

以下の規則は、(ノードの作者に)キャンセルdownvoteため+2(=削除-2)ユーザポイント...許可するAND有権者にも+1ユーザ点:

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

それは、ちょうど上記のエクスポートルールを閲覧から明らかに注意していない場合でもdescriptionoperationおよびreferenceユーザーポイント取引のそれぞれに使用されます。

このようなルールを使用して、賛成票または反対票に請求する金額の構成は、ルールUIを使用して付与(または削除)されるユーザーポイントの値を調整することだけです。

また注意descriptionoperationおよびreferenceユーザー・ポイント取引のそれぞれに使用されます。これにより、(実際のユーザーポイントトランザクションに追加されたさまざまな詳細を介して)典型的なユーザーポイントレポートも改善されます。

条件付きルールモジュールを使用すると、これらのルールを1つのルールに統合することもできます(これにより、ルールの維持が簡単になります)。

宿題:上記のルールを適用して、SEのバウンティに似たものを実装します(=あるユーザーから別のユーザーに一定量のユーザーポイントを転送します)。

PS:「反対票を投じると、評判ポイントが固定されます」(SEの場合)は、質問に対してではなく、回答に対してのみ当てはまります。それを希望どおりに調整するには、適切な追加のルール条件を追加するだけです(たとえば、コンテンツタイプに基づいて)。


「この他の質問への私の回答をご覧ください」で始まる回答を書くのをやめてください。他の質問への回答がこの質問の問題を解決する場合、投稿はお互いの重複として閉じられます。そうでない場合、答えは正接であり、質問に答えず、削除する必要があります。私が適切な行動をとる前に、あなたが何をしたいかを決める時間を与えます。どちらの方法でも、1つの質問に長い回答を投稿し、それを指す他のいくつかの質問に回答を投稿するというこの習慣は止まります。
クライヴ

より明確にするために:他の質問に与えられた他の回答へのポインターである回答は、基本的に受け入れられません。回答は、質問される質問に合わせて調整する必要があります。同じ回答が2つの質問に当てはまる場合、質問が他の質問と重複している可能性があります。
kiamlaluno

DownvoteWithdrawn」と同等のことを行ったばかりのMerci ...
Pierre.Vriens
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.