web-dev-qa-db-ja.com

ポイントがユーザーに付与されたときにルールを使用してユーザー情報を変更するには(userpointsモジュールを使用)?

http://drupal.org/project/userpoints モジュールを使用して、このユーザーにポイントが付与されたときに、ユーザーの情報を変更するルールを作成する必要があります。

次のような条件とアクションを持つルールが必要です。

ユーザーの合計ポイントが1000より大きい場合->フィールドpassedを1に設定します

渡されたフィールドは、admin/config/people/accounts/fieldsに追加したフィールドです。

私の問題は、ルールの条件でユーザーの合計ポイントをロードできないことです

Userpoints_contribモジュールはすでに有効になっています。

2
chefnelone

最近devに追加されたと思います: drupal.org/node/1109992

1
uwe

ルールの条件で、追加カスタムPHP codeを実行します。次に、次のコードを追加して、合計ユーザーポイントを取得し、確認します。状態:

$current_points = userpoints_get_current_points($userpoints_transaction->uid, 'all');
if ($current_points >= 1000) {
  return true;
}

userpoints_get_current_pointsの詳細については、これを参照してください ページ

0
subhojit777

前の回答で述べたこととは別に、ルールアクション "ユーザーのユーザーポイントをロードする」、特定のカテゴリ、またはすべてのカテゴリをまとめて要求できます。このルールアクションは、要求されたカテゴリのユーザーポイントの量を含むルール変数(名前と説明を指定できます)を提供します。その後、この変数を後続のルールアクションで使用できます。

次に、ルール条件内でその変数を使用する場合は、次の2つの方法があります。

  • ルールコンポーネントに条件を含めますが、「ユーザーのユーザーポイントの読み込み」に続くルールアクションを介してそのルールコンポーネントの実行をトリガーします(ユーザーポイントの量を含む変数をルールコンポーネントの変数として渡します)。 。
  • 条件付きルール モジュールを使用して、ルールアクション内でルール条件を指定できるようにします。

これは、ユーザーの現在の合計ユーザーポイントに関するメッセージを表示する基本的な例です(ルールイベントを任意のルールイベントに変更します)。

{ "rules_display_userpoints_after_updating_content" : {
    "LABEL" : "Display userpoints after updating content",
    "PLUGIN" : "reaction rule",
    "OWNER" : "rules",
    "REQUIRES" : [ "userpoints_rules", "rules" ],
    "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" } }
        }
      },
      { "drupal_message" : { "message" : "You now have [total-points:value] points" } }
    ]
  }
}

必要に応じて、ルールUIを使用して、上記のルールを自分のサイトにインポートします。

0
Pierre.Vriens