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"
}
}
]
}
}
それは、ちょうど上記のエクスポートルールを閲覧から明らかに注意していない場合でもdescription
、operation
およびreference
ユーザーポイント取引のそれぞれに使用されます。
このようなルールを使用して、賛成票または反対票に請求する金額の構成は、ルールUIを使用して付与(または削除)されるユーザーポイントの値を調整することだけです。
また注意description
、operation
およびreference
ユーザー・ポイント取引のそれぞれに使用されます。これにより、(実際のユーザーポイントトランザクションに追加されたさまざまな詳細を介して)典型的なユーザーポイントレポートも改善されます。
条件付きルールモジュールを使用すると、これらのルールを1つのルールに統合することもできます(これにより、ルールの維持が簡単になります)。
宿題:上記のルールを適用して、SEのバウンティに似たものを実装します(=あるユーザーから別のユーザーに一定量のユーザーポイントを転送します)。
PS:「反対票を投じると、評判ポイントが固定されます」(SEの場合)は、質問に対してではなく、回答に対してのみ当てはまります。それを希望どおりに調整するには、適切な追加のルール条件を追加するだけです(たとえば、コンテンツタイプに基づいて)。