Как отключить и удалить модуль Drupal программно?

Я хочу иметь возможность отключить, а затем удалить модуль программно в моей локальной среде, а затем легко нажать этот код на prod, чтобы все обновлялось.

Я предполагаю, что это что-то с hook_update_N. Но не знаю, с чего начать.

3 ответов


думаю, я нашел ответ! Внутри модулей .установите файл, я добавил этот код:

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

номер в функции должен отражать вашу установку drupal. Посмотрите, как их пронумеровать здесь: http://api.drupal.org/api/drupal/modules%21system%21system.api.php/function/hook_update_N/7


Drupal 8

в Drupal 8 это только один шаг.

быть помещенным внутрь MYMODULE.install:

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

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

}

в Drupal 8 вы можете использовать API конфигурации для включения и отключения модулей. Например, если вы хотите включить модуль devel. Вы должны добавить следующий код в ядро.расширение.в формате YML devel: 0 Если вы хотите удалить, вы должны удалить devel: 0 из ядра.расширение.в формате YML