1

プログラムでいくつかのルールを追加しようとしています。このチュートリアルに従って、ルールに応じて異なる価格表を管理しています。ルールを作成するには、「ルールがロードされるときに」実行されるdefault_rules_configurationフックを使用します。

1-「ルールがロードされている」とき、明らかにcronを実行しているのかどうかははっきりしていません。それをトリガーする唯一の方法ですか?

2-プログラムでルールを追加する方法があるので、ルールを挿入ロールフックに追加できますか、それともこのdefault_rulesフックがそれを行う唯一の方法ですか?

ありがとう

4

1 に答える 1

1

hook_default_rules_configuration1-ドキュメントによると:

このフックは、ルール構成がロードされるときに呼び出されます。

この関数は、キャッシュをクリアするときに実際に呼び出されます。これは、Drupalがコードで提供されるデフォルトのエンティティを再構築するときですentity_defaults_rebuild

hook_default_rules_configuration関数がどのように呼び出されるかについては、を使用して完全な呼び出しスタックを調べることができますdebug_backtrace

2-ロールの挿入に反応するルールを設定するには、実際にユーザーの挿入アクションに反応するルールを作成し、保存されたロールをチェックして、反応したいロールと一致するかどうかを確認する必要があります。

UIを介してこれを行う方が簡単だと思います。これは、ユーザーに匿名の役割が割り当てられているかどうかを確認し、割り当てられている場合は管理者にメールを送信するルールのエクスポートです。

{ "rules_role_change_rule" : {
    "LABEL" : "Role change rule",
    "PLUGIN" : "reaction rule",
    "REQUIRES" : [ "rules" ],
    "ON" : [ "user_insert" ],
    "IF" : [
      { "user_has_role" : { "account" : [ "account" ], "roles" : { "value" : { "1" : "1" } } } }
    ],
    "DO" : [
      { "mail" : {
          "to" : "admin@website.com",
          "subject" : "User role changed",
          "message" : "User role has changed",
          "from" : "drupal@website.com",
          "language" : [ "" ]
        }
      }
    ]
  }
}

それでも実装hook_default_rules_configurationする必要がありますが、チュートリアルのルールをニーズに合ったものに置き換えてください。

于 2013-01-08T14:32:38.857 に答える