如何在drupal中添加新规则

如何在drupal中添加新规则,drupal,drupal-7,drupal-commerce,Drupal,Drupal 7,Drupal Commerce,我试图以编程的方式添加一些规则,我将根据这些规则来管理不同的价目表。为了创建规则,它使用一个默认的配置钩子,该钩子将在“加载规则时”执行 1-不太清楚,当“加载规则”时,显然是运行cron来执行。这是触发它的唯一方法吗 2-是否有一种方法可以通过编程方式添加规则,以便可以在插入角色挂钩中添加规则,或者此默认的_规则挂钩是唯一的方法 谢谢1-根据: 在加载规则配置时调用此挂钩 当您清除缓存时,实际上会调用该函数,因为Drupal会通过重新构建代码中提供的默认实体 您可以检查整个调用堆栈,了解如何使

我试图以编程的方式添加一些规则,我将根据这些规则来管理不同的价目表。为了创建规则,它使用一个默认的配置钩子,该钩子将在“加载规则时”执行

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

2-是否有一种方法可以通过编程方式添加规则,以便可以在插入角色挂钩中添加规则,或者此默认的_规则挂钩是唯一的方法

谢谢

1-根据:

在加载规则配置时调用此挂钩

当您清除缓存时,实际上会调用该函数,因为Drupal会通过重新构建代码中提供的默认实体

您可以检查整个调用堆栈,了解如何使用调用
hook\u default\u rules\u 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\u default\u rules\u configuration
,但将教程中的规则替换为适合您需要的规则。

1-根据:

在加载规则配置时调用此挂钩

当您清除缓存时,实际上会调用该函数,因为Drupal会通过重新构建代码中提供的默认实体

您可以检查整个调用堆栈,了解如何使用调用
hook\u default\u rules\u 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\u default\u rules\u configuration
,但将教程中的规则替换为适合您需要的规则。

我的问题是“何时加载规则配置”。@mb14我在上面添加了更多细节。我将不进行完整的调用堆栈跟踪,但这就是我跟踪函数的方式,以了解它是如何、何时以及由哪些其他函数调用的。我的问题是“何时加载规则配置”。@mb14我在上面添加了更多细节。我将不进行完整的调用堆栈跟踪,但这就是我跟踪函数的方式,以了解它是如何、何时以及由哪些其他函数调用的。