web-dev-qa-db-ja.com

ユーザーに代わって(おそらくVBOを使用して)ノードにフラグを立てるにはどうすればよいですか?

グループのogメンバーを返すビューがあります。ユーザーはさらにグループにフラグを付けることができます。ビューから返されたすべてのユーザーにグループにフラグを設定します。だから私は Views Bulk Operations(VBO) でこれをやろうとしましたが、利用できる唯一の操作は「ユーザーにフラグを立てる(またはフラグを解除する)」です。フラグはユーザーではなくグループに添付されます。それ、どうやったら出来るの?

3
Turion

これを機能させるためにできることは、VBOと Rules モジュールの統合を使用することです。

ステップ1:ルールコンポーネントを作成する

(かなり基本的な)ルールコンポーネントを作成して、ユーザーがノードにフラグを設定します。以下は、Rules Export形式のコンポーネントです。

{ "rules_flag_node_flagged_by_a_user" : {
    "LABEL" : "Flag node flagged by a user",
    "PLUGIN" : "rule",
    "OWNER" : "rules",
    "REQUIRES" : [ "flag", "rules" ],
    "USES VARIABLES" : {
      "flagging_user" : { "label" : "Flagging user", "type" : "user" },
      "flagged_node" : { "label" : "Node to be unflagged", "type" : "node" }
    },
    "DO" : [
      { "flag_flagnode" : {
          "flag" : "your_flag",
          "node" : [ "flagged-node" ],
          "flagging_user" : [ "flagging_user" ],
          "permission_check" : "1"
        }
      },
      { "drupal_message" : { "message" : "Node flagged for user  [flagging-user:name] (uid=[flagging-user:uid])" } }
    ]
  }
}

このルールコンポーネントは、マシン名your_flagのフラグを使用します。フラグの名前に合わせてそのマシン名を編集したら、このルールを自分のサイトにインポートできるはずです(ルールUIを使用して、有効にする必要があります)。

ところで、メッセージを表示するためのルールアクションは、このルールをQAテストしているときに実際に動作していることを確認することです。必要に応じて、メッセージを削除してください。

ステップ2:VBOに作業を任せる

この手順は非常に簡単です。 [〜#〜] vbo [〜#〜] ビューを使用するだけです。操作としてVBOに実行させる手がかりは...ステップ1のルールコンポーネントを実行します

方法がよくわからない場合は、 VBOでのルールコンポーネントの使用 "に関するビデオをご覧ください。さらに知りたい場合は、次の" 複数のパラメーターを持つルールコンポーネント "ビデオ。

注意:一度に100.000レコードのように処理することは非常に困難です(メモリ要件など)。そのため、 " VBO設定の詳細 "についてのビデオもご覧になることをお勧めします。VBOを使用して一度にすべてを処理したくなる前に...

ビデオチュートリアル

Rules に慣れていない(十分/まだ)場合は、32(!!!)のすばらしい無料のビデオチュートリアル Learn the Rules framework をチェックしてください。

ハッピー [〜#〜] vbo [〜#〜] -ing while Rules -ing!

PS:この質問はD7に関するものだと思います。

2
Pierre.Vriens