web-dev-qa-db-ja.com

ルール条件を追加して、30ユーザーポイント以上のユーザーにのみ投票を許可するにはどうすればよいですか?

Userpoints> = 30のときに条件を設定したいので、ユーザーは投票できます。

このために、私は次の手順を実行しました-

  • ONイベント-「ユーザーがノードに投票する」選択された条件は「現在のユーザーポイントを比較する」であり、条件部分に「> = 30」を入力します。

私は次のモジュールを使用しています: ルールユーザーポイント および 投票の上下

3
Surendra Prasad

フックフォームの変更を実装してみてください Drupal API:hook_form_alter

Hook_form_alter内で、現在のユーザーが30ポイントを超えているかどうかを検証し、値が30未満の場合は投票ウィジェットを無効にすることができます。

2
sgoelz

あなたが求めているものには矛盾があるようです:

  • '... ONイベント-「ユーザーがノードに投票する」...':ifその(ルール)イベントがトリガーされ、投票はすでに完了しています。
  • '...の場合、ユーザーは投票できます...':条件が満足していない、ユーザーは投票できないはずです。

その矛盾を解決するために、IMOは少なくとも30ユーザーポイントを持つユーザーにのみ許可投票する必要があります。これを機能させるためのテクニックは次のとおりです。

  • ユーザーのユーザーポイント数が30に達したときにいくつかのアクセス許可を付与し、それを下回る量に減少した場合は、そのアクセス許可を再度取得します。これに使用される明らかな許可は、投票を許可する役割を使用することです。
  • 次のように Rules モジュールを使用して、ユーザーのユーザーポイントの変更を監視します。

    • 報酬が与えられるユーザーポイントをキャプチャするルールイベントを使用します(そのようなポイントはマイナスになることもあります...)。
    • ルール条件で獲得したユーザーポイントの現在の量にアクセスする方法 (ルール条件のようなすぐに使用できるルール条件がないことに注意してください)の説明に従って、ルールイベント(またはルールアクション!)を使用します。 「このユーザーは少なくとも30ユーザーポイントを持っていますか?」)。
    • ユーザーのユーザーポイント数が30以上の場合、ルールアクションを実行して、投票を許可するロールへのアクセスを許可します(30未満の場合はそのアクセスを取り消します)。 条件付きルール モジュールも使用する場合は、1つのルールで両方のタイプのルールアクション(付与と取り消し)を実行できます。
0
Pierre.Vriens