web-dev-qa-db-ja.com

メンバー数が50人未満の場合、ルールをチェックインするにはどうすればよいですか?

ユーザーがサイトにサインアップするときに、いくつかのユーザーポイントを追加する必要があります。 Rules モジュールを使用して、私はすでにその機能を提供しました。しかし問題は、50人のメンバーがサインアップした後にポイントを少し減らすことです。

では、登録されている人を区別するための条件を実装するにはどうすればよいですか。

  • 最初の50メンバーは、Sign-up (first 50 = 20,000)を意味します。
  • 50人のメンバーの後に3000 points to user signupを追加します。

誰か提案?

1
Pradeep K

これまでの合計ユーザー数をusersテーブルから取得する必要があります。これを行うには、db_query("SELECT COUNT(*) FROM users"); //[not tested]を記述しなければならないphpコードで条件を使用できます。

結果が既存のユーザーの数を取得する場合。ポイントを割り当てるためにアクションに進むためにtrue/falseを返すことができます。

動作したかどうか教えてください。

1
Jeet

以下でさらに詳しく説明するように、 RulesViews Bulk Operations モジュールと組み合わせて使用​​することで、この作業を行うことができます。

ステップ1

Views Bulk Operations モジュールを使用して、すべてのユーザーのビューを作成します。このビューにVBOフィールドを追加します。ユーザーごとにuidのようなフィールドを含めるだけです(他のフィールドは必要ありません)。考慮したいユーザーごとに正確に1行を取得するようにしてください(例:count user/1?)。

ステップ2

ルール条件「VBOビューによって返される結果の数を確認する」を使用して最初のルールコンポーネントを作成します。そして、前のステップで作成したVBOビューを選択します。結果の数が50以下の場合は、(そのルールコンポーネントで)ルールアクションを実行して、20,000ポイントを付与します(現在のルールがすでに行っているのと同様)。

ステップ3

手順2のルールコンポーネントと同様の2番目のルールコンポーネントを作成しますが、このコンポーネントのロジックは次のようになります。結果の数が51以上の場合は、(そのルールコンポーネントで)ルールアクションを実行して3,000を付与します。ポイント。

ステップ4

次のように既存のルールを置き換えます。

  • 同じRules Event(=ユーザーがサイトにサインアップするとき)を維持します。
  • ルール条件は使用しないでください(このルールでは必要ありません)。
  • 2ルールアクションを実行します:
    • 手順2のルールコンポーネントを実行します。
    • 手順3のルールコンポーネントを実行します。

完了!

0
Pierre.Vriens