Вы можете экспортировать конфигурацию правил через пользовательский интерфейс Rules, а затем реализовать hook_default_rules_configuration_alter () следующим образом:
/**
* Implements hook_default_rules_configuration_alter().
*/
function MODULENAME_default_rules_configuration_alter(&$data) {
if (isset($data['commerce_cart_add_to_cart_message'])) {
$data['commerce_cart_add_to_cart_message'] = entity_import('rules_config', '{ "commerce_cart_add_to_cart_message" : {
"LABEL" : "Display an Add to Cart message",
"PLUGIN" : "reaction rule",
"OWNER" : "rules",
"TAGS" : [ "Commerce Cart" ],
"REQUIRES" : [ "rules", "commerce_cart" ],
"ON" : { "commerce_cart_product_add" : [] },
"IF" : [
{ "data_is" : { "data" : [ "commerce-order:commerce-nocart" ], "value" : "0" } }
],
"DO" : [
{ "commerce_cart_add_to_cart_message" : { "commerce_product" : [ "commerce-product" ] } }
]
}
}');
}
}
Просто измените экземпляры, $data['commerce_cart_add_to_cart_message']
чтобы использовать имя вашего компьютера правил, и замените строку экспорта своей.
Вы также можете использовать rules_import () вместо entity_import () . Либо приемлемо.
Поскольку модуль rules загружает правила по умолчанию из кода в базу данных и с тех пор загружает их из базы данных, он не сразу получит ваше переопределение. Для этого перейдите в пользовательский интерфейс «Правила» и отмените правило. Он вернется к коду по умолчанию, который будет вашим переопределением.
Чтобы программно отменить правило, вы можете сделать это (снова заменив имя компьютера правила):
if ($rules_config = rules_config_load('commerce_cart_add_to_cart_message')) {
$rules_config->delete();
}
Примером использования этого может быть сделать это во время функции обновления для пользовательского модуля.
Может показаться неприемлемым его удаление, но удаление и возврат эквивалентны правилам, предоставляемым кодом, поскольку удаление означает удаление из базы данных. Если бы это было правило, созданное с помощью пользовательского интерфейса, оно исчезло бы, однако правило из кода просто удаляло бы из БД, а затем снова считывало из кода.
К сожалению, в настоящее время есть только команды drush для включения / выключения правил. Существует запрос функции для команды удаления / возврата по адресу https://www.drupal.org/node/2507187.
hook_default_rules_configuration
я могу отменить правила, чтобы применить любые обновления. это умно, но: могу ли я принудительно вернуться по правилу? я могу сделать это программно?rules_ui_confirm_operation_apply
. Здесь вы также можете включить и отключить. Спасибо за вашу большую помощь! Я немного попробую и приму ваш ответ через минутуЧтобы обновить правила модуля программно, вы можете загрузить их и изменить. Пример удаления одиночного действия :
Если это одноразовое изменение, добавьте его в hook_update.
Смотрите: RulesPlugin для API.
источник