サイトのユーザーにバッジを割り当てたい。ユーザーポイント、ユーザーバッジ、ルールモジュールがあります。ユーザーポイントは正常に機能しています。バッジを作成しました。ここで、ユーザーの合計ポイントが50を超える場合は常に、ユーザーにバッジが割り当てられるようにします。それで、ルールを作成しました。しかし、そのためのイベント、状態、またはアクションを見つけることができませんでした。アドバイスをお願いします
注:ユーザーのプロファイルに移動してバッジを割り当てることで、ユーザーに直接バッジを割り当てようとしましたが、そうしようとすると、「My_Badge」は有効なバッジではありません。 。オートコンプリート機能を使用してみてください(JavaScriptが必要です)。これは何ですか?
これはもう問題ではないかもしれませんが、それでもユーザーバッジモジュールの製品版がリリースされており、ほとんどのバグが処理されているので、問題は今解決する必要があると思います。したがって、最新の7.x-1.0推奨リリースにアップグレードしてください。
ルールアクションにバッジを追加できなかった理由については、ユーザーバッジのD7バージョンはルールに統合されていませんでした。実際に取り組んでおり、まもなく統合される予定です。
使用しているユーザーバッジのバージョンを教えてください。
モジュールのページによると、「7.xバージョンはまだ本番環境には適していません。」したがって、それを使用する場合は、少なくとも手動でデバッグする必要があります。
このユーザー に同じ問題が発生しており、最新の2.x devをアンインストールして再インストールすると問題が解決したとのことです。
このルールの例(ルールエクスポート形式)をご覧ください。
{ "rules_grant_a_new_badge" : {
"LABEL" : "Grant a new badge",
"PLUGIN" : "reaction rule",
"OWNER" : "rules",
"REQUIRES" : [ "userpoints_rules", "rules", "user_badges", "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" : "50" } },
"DO" : [
{ "add_badge_by_name" : { "badge" : "1", "user" : [ "userpoints-transaction:user" ] } }
]
}
]
}
]
}
}
最初のルールアクション(ルール条件ではありません!)として、ユーザーのユーザーポイントの現在の量を取得します。金額が50以上の場合、ユーザーバッジが付与されます。
この例では、 条件付きルール モジュールを使用しています。このモジュールを使用すると、さまざまなユーザーバッジのロジックを1つのルールに統合できます。たとえば、50ポイントのブロンズ、500ポイントのシルバー、5000ポイントのゴールドなどです。ルールアクションを再実行してルールコンポーネント(適切なルール条件を追加する)を実行することもできるため、この追加のモジュールは必要ありません。詳細については、「 条件付きルールモジュールを使用する代わりの方法は何ですか? 」の回答を参照してください。
このルールを機能させるための手がかりは、最初のルールアクション "ユーザーのユーザーポイントの読み込みです。 」これは、「ユーザーの現在のユーザーポイントを確認する」ための欠落したルール条件などの代替手段(回避策?)です。