如何以编程方式禁用和卸载Drupal模块?

Ben*_*all 16 php drupal drupal-7 drupal-modules

我希望能够在我的本地环境中以编程方式禁用然后卸载模块,然后轻松地将该代码推送到prod,以便一切都得到更新.

我猜它是与之相关的东西hook_update_N.但不知道从哪里开始.

Ben*_*all 41

想想我找到了答案!在模块.install文件中,我添加了以下代码:

/**
 * Disable and uninstall the module.
 */
function MODULE_update_7200() {
  if( module_exists('MODULE')) {
    module_disable(array('MODULE'));
    drupal_uninstall_modules(array('MODULE'));
  }
}
Run Code Online (Sandbox Code Playgroud)

函数中的数字应该反映您的drupal安装.在这里查看如何编号:http://api.drupal.org/api/drupal/modules%21system%21system.api.php/function/hook_update_N/7


ley*_*nnx 7

Drupal 8

在 Drupal 8 中,这只是现在的一步。

要放在里面MYMODULE.install

/**
 * Uninstall Field UI.
 */
function MYMODULE_update_8001(&$sandbox) {

  \Drupal::service('module_installer')->uninstall(['field_ui']);

}
Run Code Online (Sandbox Code Playgroud)