web-dev-qa-db-ja.com

ルール付きのチェックボックスの数を数える方法は?

私は Drupal Commerce サイトで支払いに ユーザーポイント (=コイン)を使用しています。

私は特別なケースがあります-ユーザーがコインで購入する必要のある製品には、ユーザーが入力するいくつかのフィールドが必要です。そのため、このケースではコンテンツタイプを使用しました。ユーザーが新しいコンテンツタイプを追加すると、ユーザーのアカウントから10コインが削減されます。これは既に正常に機能しています。

これで、このコンテンツタイプにも分類法があり、ユーザーはそれに用語を追加できます。これは、ユーザーがフォームに入力するときに後でフォームに表示されます。

問題:

チェックする分類用語のチェックボックスの数を数え、それらにコストを掛ける必要があります。したがって、3/5がチェックされている場合、10コイン* 3 = 30コインは、ユーザーが新しいコンテンツタイプを追加したときの最終的な価格になります。

Rules でこれは可能ですか?私はそれを実現する方法を知りません(私はフロントエンド開発者であり、PHPコーダー)ではありません)。

2
JOKER

はい、これは Rules で完全に可能であり、ジョブを完了するためにPHPは必要ありません。あなたの場合、そのようなルールの重要な部分はLoopを実行するためのルールアクション。このようなループに慣れていない場合は、「-」というタイトルのチュートリアルを参照することを強くお勧めします。 リストとループ "。

あなたのケースでは、(少なくとも)これらのルールアクションを使用する必要があります:

  • 「変数を追加」(たとえば、nr_of_checked_termsのようなマシン名で)、初期値は「0」。
  • 分類用語に関連するループを追加します。その後、リスト内の各アイテム(=各分類用語)を反復処理する必要があります。そして、反復ごとに「データ値を設定する」ためのルールアクションを実行する必要がありますが、実際にはnr_of_checked_termsの値を「1」だけ増やします。

ループが終了すると、nr_of_checked_termsの値は、チェックされた実際の用語数になります。末尾に別のルールアクションを追加して、使用可能なトークンの1つとしてnr_of_checked_termsを使用して実際の乗算を実行します。

完了

PS 1:ここでの質問のバリエーションのようないくつかのサンプルルールについては、「 ルールを使用して無制限の用語参照フィールドに複数の値を設定する方法 」に対する私の回答を参照してください。

PS 2:これはD7についてだと思います...

2
Pierre.Vriens