如何在drupal中添加新规则

时间:2012-12-07 08:38:36

标签: drupal drupal-7 drupal-commerce

我正在尝试以编程方式添加一些规则,我正在遵循此tutorial来管理不同的价格表,具体取决于规则。要创建规则,它使用default_rules_configuration挂钩,这将在“加载规则时”执行。

1 - 当“加载规则”时,并不是很清楚,显然是在运行cron。这是触发它的唯一方法吗?

2 - 有没有办法以编程方式添加规则,因此可以在插入角色挂钩中添加规则,或者这个default_rules挂钩是唯一的方法吗?

由于

1 个答案:

答案 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,但要将教程中的规则替换为符合您需求的规则。