serpoints Karma モジュールがあることを知っていますが、これはDrupal 6バージョンにのみ更新されます。
投票をユーザーポイントに変換するためのテクニックはありますか?または、この目的のためにカスタムモジュールを作成するための参照の方向に私を向けることができますか?
注:投票ポイントモジュールはDrupal 7では使用できないため、 ルール)の使用を検討していました ユーザーがノードに投票したときに、ノードの作成者にポイントを付与します。
serpoints Karma モジュールは実際にはD7では使用できません。このモジュールの目的は次のとおりです(プロジェクトページから):
Userpoints Karmaは、 Vote Up/Down モジュールを serpoints モジュールと統合して、ノード/コメント評価カルマシステムを提供します。
このモジュールを使用すると、投票/アップダウンウィジェットを使用する投票者は、特定のノードまたはコメントの作成者にポイントを追加または削除できます。これにより、作成者が書いた内容に対して賞を授与または罰せられます。ポイントの数は、サイトの管理者が構成できます。また、ノードタイプは構成可能であるため、特定のタイプのノードまたはコメントに表示され、他のタイプには表示されません。
このモジュールは、ユーザーがログインしたときに、他のユーザーがノードやコメントに投票したために獲得/失った合計ポイントをユーザーに通知できます。
そして、このモジュールは Vote Up/Down モジュール(D7用のalfa1バージョンのみを持っています)に依存しています。
これらすべてを念頭に置いて、D7の場合、これらの代替手段を組み合わせて使用することをお勧めします。同じ目標を達成するためにモジュールを頻繁に使用します(=一部のノードが賛成(または反対)に投票されたときにユーザーポイントを加算(または減算)します) )::
これは、 Answers モジュール(開示:私はその共同メンテナーです)、つまりそのサブモジュール「AnswersUserpoints」で使用されるアプローチでもあります。同意する場合は、以下をお読みください...
投票のすべてのバリエーションを処理するには、次の4つのケースをカバーする4つのルール(のみ!)が必要です。
以下は、これらの各ケースに必要なルールです(上記の必要なモジュールを有効にした後、ルールUIを使用して独自のサイトにインポートします)。これらのルールは、7.x-4.0-rc2バージョンの Answers に含まれているルールの拡張バージョンです(また、その開発バージョンにもコミットされることが期待されています)。マシン名answers_question
のコンテンツタイプを使用します(この名前を自分のマシン名に合わせて調整してください)。
以下のルールは、(ノードの作成者に)賛成票に対して+5ユーザーポイントを付与します。
{ "rules_voteup_question" : {
"LABEL" : "voteup_question",
"PLUGIN" : "reaction rule",
"OWNER" : "rules",
"TAGS" : [ "answers" ],
"REQUIRES" : [ "rules", "voting_rules", "userpoints_rules" ],
"ON" : { "voting_rules_insert_node" : [] },
"IF" : [
{ "node_is_of_type" : {
"node" : [ "node" ],
"type" : { "value" : { "answers_question" : "answers_question" } }
}
},
{ "voting_rules_condition_check_vote_value" : { "vote" : [ "vote" ], "value" : "1" } }
],
"DO" : [
{ "userpoints_action_grant_points" : {
"user" : [ "node:author" ],
"points" : "5",
"tid" : "0",
"entity" : [ "" ],
"description" : "Receive upvote to [node:type-name] \u0022[node:title]\u0022",
"operation" : "QuestionUpvoteReceived",
"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"
}
}
]
}
}
以下のルールは、キャンセルされた賛成票に対して-5(=削除+5)ユーザーポイントを(ノードの作成者に)付与します。
{ "rules_voteup_question_cancel" : {
"LABEL" : "voteup_question_cancel",
"PLUGIN" : "reaction rule",
"OWNER" : "rules",
"TAGS" : [ "answers" ],
"REQUIRES" : [ "rules", "voting_rules", "userpoints_rules" ],
"ON" : { "voting_rules_delete_node" : [] },
"IF" : [
{ "node_is_of_type" : {
"node" : [ "node" ],
"type" : { "value" : { "answers_question" : "answers_question" } }
}
},
{ "voting_rules_condition_check_vote_value" : { "vote" : [ "vote" ], "value" : "1" } }
],
"DO" : [
{ "userpoints_action_grant_points" : {
"user" : [ "node:author" ],
"points" : "-5",
"tid" : "0",
"entity" : [ "" ],
"description" : "Unupvote [node:type-name] \u0022[node:title]\u0022",
"operation" : "QuestionUpvoteCancelled",
"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"
}
}
]
}
}
以下のルールは、(ノードの作成者への)反対票の-2(付与-2)ユーザーポイントを減算します...[〜#〜]および[〜#〜]また、投票者の-1ユーザーポイント:
{ "rules_votedown_question" : {
"LABEL" : "votedown_question",
"PLUGIN" : "reaction rule",
"OWNER" : "rules",
"TAGS" : [ "answers" ],
"REQUIRES" : [ "rules", "voting_rules", "userpoints_rules" ],
"ON" : { "voting_rules_insert_node" : [] },
"IF" : [
{ "node_is_of_type" : {
"node" : [ "node" ],
"type" : { "value" : { "answers_question" : "answers_question" } }
}
},
{ "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" : "QuestionDownvoteReceived",
"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" : "QuestionDownvoteIssued",
"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"
}
}
]
}
}
以下のルールは、キャンセルされた反対票に対して+2(=削除-2)ユーザーポイントを(ノードの作成者に)付与します...[〜#〜]および[〜#〜] 投票者のユーザーポイントも+1:
{ "rules_votedown_question_cancel" : {
"LABEL" : "votedown_question_cancel",
"PLUGIN" : "reaction rule",
"OWNER" : "rules",
"TAGS" : [ "answers" ],
"REQUIRES" : [ "rules", "voting_rules", "userpoints_rules" ],
"ON" : { "voting_rules_delete_node" : [] },
"IF" : [
{ "node_is_of_type" : {
"node" : [ "node" ],
"type" : { "value" : { "answers_question" : "answers_question" } }
}
},
{ "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" : "QuestionDownvoteCancelled",
"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" : "QuestionDownvoteWithdrawn",
"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"
}
}
]
}
}
上記の(4)エクスポートされたルールを参照するだけでは明らかではないかもしれませんが、各ユーザーポイントトランザクションで使用されるdescription
、operation
、およびreference
に注意してください。
上記のルールを有効にし、それらを使用していくつかの(テスト)データを生成した後(それらが関連するノードに投票することにより)、典型的な ユーザーポイント レポートを見てください。
これがどのように見えるかの例です:
Points Date Reason Status Actions
5 Fri, 04/01/2016 - 16:30 Receive upvote to Question ... Approved view edit
-5 Fri, 04/01/2016 - 16:29 Unupvote Question "How to i... Approved view edit
2 Mon, 03/28/2016 - 14:41 addPoints Approved view edit
-2 Mon, 03/28/2016 - 14:40 removePoints Approved view edit
10 Thu, 03/17/2016 - 13:52 Upvote Answer to "What are ... Approved view edit
5 Tue, 03/15/2016 - 11:30 Upvote Question "How to imp... Approved view edit
-5 Tue, 03/15/2016 - 11:27 Voting Corrected Approved view edit