Anda dapat mengekspor konfigurasi aturan melalui UI Aturan dan kemudian menerapkan hook_default_rules_configuration_alter () seperti ini:
/**
* 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" ] } }
]
}
}');
}
}
Cukup ubah instance $data['commerce_cart_add_to_cart_message']
untuk menggunakan nama mesin aturan Anda dan ganti string ekspor dengan milik Anda.
Anda juga dapat menggunakan rules_import () sebagai ganti entitas_import () . Keduanya bisa diterima.
Karena modul rules memuat aturan default dari kode ke dalam database dan sejak saat itu memuatnya dari database, itu tidak akan segera mengambil alih Anda. Untuk membuatnya, navigasikan ke UI Aturan dan kembalikan aturan. Ini akan kembali ke kode default, yang akan menimpa Anda.
Untuk mengembalikan aturan secara terprogram Anda dapat melakukan ini (lagi-lagi mengganti nama mesin aturan):
if ($rules_config = rules_config_load('commerce_cart_add_to_cart_message')) {
$rules_config->delete();
}
Contoh penggunaan yang mungkin untuk melakukannya selama fungsi pembaruan untuk modul khusus.
Mungkin kelihatannya diperingatkan untuk menghapusnya tetapi menghapus dan mengembalikan setara dengan aturan yang disediakan oleh kode karena delete berarti menghapus dari basis data. Jika ini adalah aturan yang dibuat melalui UI maka itu akan hilang, namun aturan dari kode hanya akan menghapus dari DB dan kemudian membaca lagi dari kode.
Sayangnya saat ini hanya ada perintah drush untuk mengaktifkan / menonaktifkan aturan. Ada permintaan fitur untuk perintah delete / revert di https://www.drupal.org/node/2507187
hook_default_rules_configuration
saya dapat mengembalikan aturan sehingga setiap pembaruan diterapkan. itu cerdas, tetapi: dapatkah saya memaksa pengembalian berdasarkan aturan? dapatkah saya melakukan ini secara terprogram?rules_ui_confirm_operation_apply
. Di sini Anda juga dapat mengaktifkan dan menonaktifkan. Terima kasih atas bantuan Anda! Saya akan mencoba sedikit dan menerima jawaban Anda dalam satu menitUntuk memperbarui aturan modul secara terprogram, Anda dapat memuatnya dan mengubahnya. Contoh menghapus satu tindakan :
Jika satu kali diubah, tambahkan ke hook_update.
Lihat: RulesPlugin untuk API.
sumber