我正在尝试以编程方式添加一些规则,我正在遵循此tutorial来管理不同的价格表,具体取决于规则。要创建规则,它使用default_rules_configuration挂钩,这将在“加载规则时”执行。
1 - 当“加载规则”时,并不是很清楚,显然是在运行cron。这是触发它的唯一方法吗?
2 - 有没有办法以编程方式添加规则,因此可以在插入角色挂钩中添加规则,或者这个default_rules挂钩是唯一的方法吗?
由于
答案 0 :(得分:1)
1 - 根据hook_default_rules_configuration
documentation:
加载规则配置时会调用此挂钩。
当您清除缓存时,实际上会调用该函数,因为Drupal通过entity_defaults_rebuild
重建代码中提供的默认实体。
您可以使用debug_backtrace
hook_default_rules_configuration
函数的调用方式
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
,但要将教程中的规则替换为符合您需求的规则。