web-dev-qa-db-ja.com

ルールモジュールを使用して、作成されたばかりのノードにフラグを付ける方法は?

公開後、ノードを自動的に flag ノードにする必要があります。特定のコンテンツタイプのすべてのノードにフラグが付けられます。

その問題を解決するために、作成されたノードに自動的にフラグを付けることができることを期待して、 Rules モジュールをインストールしました。ルールモジュールには、フラグアクションがあらかじめ組み込まれていません。

作成したばかりのアイテムにフラグを付けることはできますか?

5
Marcos Buarque

公開時にノードにフラグを付けるには、以下を行う必要があります。

  • Admin/config/workflow/rulesで、イベントとして「新しいコンテンツを保存した後」を選択して新しいルールを作成します
  • フラグを設定するコンテンツタイプを選択する「コンテンツのタイプ」条件を作成します
  • 条件テーブルの下部に表示される[追加]リンクをクリックします
  • 「AND」行で、「条件の追加」をクリックします
  • 条件タイプとして「コンテンツが公開されています」を選択して新しい条件を作成します
  • タイプとして「カスタムの実行PHPコード」を選択する新しいアクションを追加します
  • カスタムとして次のコードを使用PHP code

    $flag = flag_get_flag('published'); // Replace "published" with the name of the flag you want to add.
    $flag->flag('flag', $node->nid);
    

Drupal 6の場合、ルールはadmin/config/system/actionsに設定されたカスタムアクションを公開しましたが、Drupal 7のルールのバージョンはその可能性があります。Drupal 6のフラグは、覚えている限り、ルールにいくつかのアクションを公開しましたが、Drupal 7。
そのため、カスタムのPHPアクションを使用してノードにフラグを立てました。

0
kiamlaluno

参考までに、多くの検索の結果、Drupal7のFlagでのRules2サポートがすでに開発中であることがわかりました。試してみましたがうまくいきました!

ここに記載されているパッチもあります: http://nodeone.se/blogg/learn-flag-with-nodeone-part-7

グーグルアウトするのは簡単ではありません! :Pさようなら!

1
Paolo Pustorino

はい、これは、カスタムPHPを作成せずに、Rules UIを介してRules 2で実行できます。

公開後、ノードに自動的にフラグを立てる必要があります。

同じアクションでノードを「作成」している場合は、カスタムPHPコードを使用せずにノードにフラグを付けることができるように、ルールアクションを変更する必要があります。

新しいルールを作成し、「新しいエンティティの作成」アクションを追加します。下の画像を参照してください。

Add Create new entity action

次に、エンティティを保存するエンティティを保存(即時保存を強制)し、エンティティにフラグを付ける必要があります。下の画像を参照してください。

enter image description here

最初にエンティティを保存せずに、あらゆる種類のSQLエラーなどを受け取りました。上記の設定は私にとっては機能し、カスタムPHPを必要としません。

0
Citricguy