web-dev-qa-db-ja.com

ルールを使用して賛成票と反対票をユーザーポイントに変換するにはどうすればよいですか?

serpoints Karma モジュールがあることを知っていますが、これはDrupal 6バージョンにのみ更新されます。

投票をユーザーポイントに変換するためのテクニックはありますか?または、この目的のためにカスタムモジュールを作成するための参照の方向に私を向けることができますか?

:投票ポイントモジュールはDrupal 7では使用できないため、 ルール)の使用を検討していました ユーザーがノードに投票したときに、ノードの作成者にポイントを付与します。

2
Andrew Welch

これらのページでは、必要なものを見つけることができます。

ユーザーポイント これはモジュールです

ユーザーポイント提供モジュール より多くのモジュール!

あなたのウェブサイトに合うものを選んでください。

3
Tyler Durden

質問の絞り込み

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)エクスポートされたルールを参照するだけでは明らかではないかもしれませんが、各ユーザーポイントトランザクションで使用されるdescriptionoperation、および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
1
Pierre.Vriens