2012-12-07 47 views
1

我試圖以編程方式添加一些規則,我遵循此tutorial根據規則管理不同的價格列表。爲了創建規則,它使用了一個default_rules_configuration掛鉤,將在「規則被加載時」執行。如何在drupal中添加新規則

1 - 當「規則被加載」時,顯然不是很清楚,顯然是運行cron。它是唯一觸發它的方法嗎?

2 - 有沒有辦法以編程方式添加規則,所以可以在插入角色鉤子中添加規則,或者這是default_rules鉤子唯一的方法嗎?

由於

回答

1

1 - 根據hook_default_rules_configuration documentation:當規則配置加載

該鉤子被調用。

該函數實際上是在清除緩存時調用的,因爲這是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" : "[email protected]", 
      "subject" : "User role changed", 
      "message" : "User role has changed", 
      "from" : "[email protected]", 
      "language" : [ "" ] 
     } 
     } 
    ] 
    } 
} 

你仍然要執行hook_default_rules_configuration但有一個替換規則教程適合您的需求。

+0

我的問題的重點是'何時加載規則配置'。 – mb14

+0

@ mb14我在上面添加了更多細節。我不會瀏覽完整的調用堆棧跟蹤,但這就是我將如何跟蹤函數以查看如何,何時以及通過調用其他函數的方式。 – nmc