私は Rules モジュールを使用して、ユーザーがいつログインしたかを知り、ユーザーに自分のログインイベントを通知しました。
ここで、ユーザーが特定のタイプのコンテンツを初めて送信したときを確認したいので、ユーザーが特定のコンテンツタイプの最初のコンテンツを送信したときを理解できます。
ルールのルールを変更してこれを実装するにはどうすればよいですか?
与えられた答えはうまくいきますが、通常、目的を達成するためのさまざまな方法があります。1つの解決策は、 Views と Views Bulk Operations(VBO) の組み合わせの使用です。それを達成するためのモジュール
ルールを使用してすべてのジョブを実行することもできます。多くのコンテンツタイプでこの機能を使用したくない場合は、ブール値フィールドをユーザーのアカウントに追加できます。デフォルト値は 'False 'ユーザーが目的のタイプの最初のコンテンツを書き込んだかどうかを示し、ノード送信イベントでこのフィールドをチェックして、この投稿がそのタイプの彼/彼女の最初の投稿であるかどうかを確認できます。目的のタイプの最初のコンテンツを送信した後、このフィールドをTrueに設定することを忘れないでください。
上記のアプローチは、一度計算して何度も使用するため、クエリを必要としない処理原因をいくつか節約します。
また、条件node.uid == user->uid
およびnode.type == "TYPE_MACHINE_NAME"
を使用してノードテーブルに対するクエリを含むカスタムルールイベント( [〜#〜] api [〜#〜] )を書き込むこともできます。クエリが空でない場合は、ユーザーがそのタイプのコンテンツを既に送信していることを意味します。 Falseを返します。
追加のモジュールを必要としない別のソリューションは、専用のロールを作成することです。そのロールを "Contributor"と呼びましょう(適切なロールを使用してください)。
次に、次のような基本的なルールを作成します。
上記を設定したら、既存のルールを改善して...推測したかどうかを確認します...ユーザーにロール "投稿者"があるかどうかを確認します。
Flag モジュールを使用して、ユーザーが要件に一致するコンテンツを最初に送信したときにフラグを立てます。このようなユーザーにフラグを付けるには、次のような基本的なルールを作成します。
上記を設定したら、既存のルールを改善して、ユーザーにフラグが立てられているかどうかを確認します。