Você pode exportar a configuração de regras por meio da UI de regras e implementar hook_default_rules_configuration_alter () assim:
/**
* 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" ] } }
]
}
}');
}
}
Apenas altere as instâncias de $data['commerce_cart_add_to_cart_message']
para usar o nome da máquina de regras e substitua a sequência de exportação pela sua.
Você também pode usar rules_import () em vez de entity_import () . Qualquer um é aceitável.
Como o módulo de regras carrega regras padrão do código no banco de dados e, a partir de então, as carrega do banco de dados, ele não capta imediatamente sua substituição. Para fazer isso, navegue até a interface do usuário de regras e reverta a regra. Ele voltará ao código padrão, que será sua substituição.
Para reverter programaticamente uma regra, você pode fazer isso (substituindo novamente o nome da máquina de regras):
if ($rules_config = rules_config_load('commerce_cart_add_to_cart_message')) {
$rules_config->delete();
}
Um exemplo de uso disso pode ser fazê-lo durante uma função de atualização para um módulo personalizado.
Pode parecer difícil excluí-lo, mas excluir e reverter são equivalentes às regras fornecidas pelo código, porque excluir significa excluir do banco de dados. Se essa fosse uma regra criada por meio da interface do usuário, ela desapareceria; no entanto, uma regra do código será excluída do banco de dados e lida novamente a partir do código.
Infelizmente, atualmente existem apenas comandos drush para ativar / desativar regras. Há uma solicitação de recurso para um comando de exclusão / reversão em https://www.drupal.org/node/2507187
hook_default_rules_configuration
posso revertê-las para que quaisquer atualizações sejam aplicadas. isso é inteligente, mas: posso forçar uma reversão por regra? posso fazer isso programaticamente?rules_ui_confirm_operation_apply
. Aqui você também pode ativar e desativar. Obrigado pela sua grande ajuda! Vou tentar em torno de um pouco e aceitar a sua resposta em um minutoPara atualizar as regras do módulo programaticamente, você pode carregá-las e alterá-las. Exemplo de remoção de ação única :
Se for uma alteração única, adicione-a em hook_update.
Consulte: RulesPlugin para API.
fonte