web-dev-qa-db-ja.com

ポイントに基づいてユーザーロールを変更するルールを作成するには(ユーザーポイントモジュールを使用)

私は ユーザーポイント モジュールを使用しています。これにより、ユーザーにポイントを付与できます。ここまでは順調ですね。

この条件/アクションを実行するルールを作成する必要があります。ユーザーポイントが付与されたら、ユーザーに10を超えるポイントがあるかどうかを確認します。その場合、このユーザーに「マスター」ロールを追加します。

ルール条件の「データ比較」を使用してみましたが、「ユーザーの合計ポイント "のような値が見つかりません。

どうすればいいですか?

3
chefnelone

ser points contrib モジュールを試しましたか?私は特に言及しています

userpoints_role

ユーザーは、特定のポイントのしきい値を獲得または失うと、役割に参加/離脱します。

3
junedkazi

あなたの質問は Rules を使用して、「...「ユーザーの合計ポイント」...」のようなものを見つけることです(そして、ルールイベントに関連しています) 「ユーザーにユーザーポイントが付与された場合」)。このルールの例(ルールエクスポート形式)を見てください。

{ "rules_grant_new_role" : {
    "LABEL" : "Grant a new role",
    "PLUGIN" : "reaction rule",
    "OWNER" : "rules",
    "REQUIRES" : [ "userpoints_rules", "rules", "rules_conditional" ],
    "ON" : { "userpoints_event_points_awarded_after" : [] },
    "DO" : [
      { "userpoints_rules_get_current_points" : {
          "USING" : { "user" : [ "site:current-user" ], "tid" : "all" },
          "PROVIDE" : { "loaded_points" : { "total_points" : "Number of points in all categories together" } }
        }
      },
      { "CONDITIONAL" : [
          {
            "IF" : { "NOT data_is" : { "data" : [ "total-points" ], "op" : "\u003C", "value" : "11" } },
            "DO" : [
              { "drupal_message" : { "message" : "You have at least 11 points (actually you have [total-points:value] points ...)." } }
            ]
          }
        ]
      }
    ]
  }
}

上記のルールは、最初のルールアクション(ルール条件ではありません!)として、ユーザーの現在のユーザーポイント数を取得します。量が11以上の場合は、それに関する適切なメッセージが表示されます(ケースに適合するロールを付与するルールアクションに置き換えてください)。

この例では Conditional Rules モジュールを使用していますが、Rulesアクションを変更して(適切なルール条件を追加する)ルールコンポーネントを実行して、これが不要になるようにすることもできます。追加モジュール。

このルールを機能させるための手掛かりは、最初のルールアクションです "ユーザーのユーザーポイントを読み込みます 」これは、「ユーザーの現在のユーザーポイントを確認する」ための欠落したルール条件などの代替手段(回避策?)です。

1
Pierre.Vriens