我試圖以編程方式添加一些規則,我遵循此tutorial根據規則管理不同的價格列表。爲了創建規則,它使用了一個default_rules_configuration掛鉤,將在「規則被加載時」執行。如何在drupal中添加新規則
1 - 當「規則被加載」時,顯然不是很清楚,顯然是運行cron。它是唯一觸發它的方法嗎?
2 - 有沒有辦法以編程方式添加規則,所以可以在插入角色鉤子中添加規則,或者這是default_rules鉤子唯一的方法嗎?
由於
我試圖以編程方式添加一些規則,我遵循此tutorial根據規則管理不同的價格列表。爲了創建規則,它使用了一個default_rules_configuration掛鉤,將在「規則被加載時」執行。如何在drupal中添加新規則
1 - 當「規則被加載」時,顯然不是很清楚,顯然是運行cron。它是唯一觸發它的方法嗎?
2 - 有沒有辦法以編程方式添加規則,所以可以在插入角色鉤子中添加規則,或者這是default_rules鉤子唯一的方法嗎?
由於
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
但有一個替換規則教程適合您的需求。
我的問題的重點是'何時加載規則配置'。 – mb14
@ mb14我在上面添加了更多細節。我不會瀏覽完整的調用堆棧跟蹤,但這就是我將如何跟蹤函數以查看如何,何時以及通過調用其他函數的方式。 – nmc