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

17

Существует много ресурсов для этого в Drupal 6, но я не нашел решения для Drupal 7.

Как я могу установить и включить выбранные модули?

Codium
источник

Ответы:

27

Там только один шаг, используя module_enable():

$modules = array('module1', 'module2'); // Array of module names
$enable_dependencies = TRUE; // Whether or not to enable dependant modules

module_enable($modules, $enable_dependencies);
Клайв
источник
Включает ли это модули в том же порядке, что и в массиве?
Брент Коннор
Нет @BrentConnor, карта зависимостей вычисляется, и они устанавливаются в любом порядке
Клайв
8

Вот как вы могли бы сделать это с обновлением базы данных hook_update_Nиз *.installфайла другого включенного модуля . Затем вы можете зайти /update.phpв браузер или запустить $ drush updbв командной строке, чтобы запустить этот код.

/**
 * Enable module1 and module2.
 */
function MYMODULE_update_7101() {

  // Array of module names.
  $modules = ['module1', 'module2'];

  // Whether or not to enable dependant modules.
  $enable_dependencies = TRUE;

  module_enable($modules, $enable_dependencies);
}
elvis2
источник
1

В Drupal 7 больше нет drupal_install_modules () , поэтому, если вы хотите принудительно запустить процесс установки модуля (если он уже включен), вы можете использовать:

module_invoke('module_name', 'install');

Чтобы включить это просто:

module_enable(array('module_name'));

Или используя drushкак часть процесса развертывания:

drush -y en module_name
kenorb
источник
0

Для Drupal 8 вы можете использовать следующее:

\Drupal::service("module_installer")->install(["my_custom_module"]);

В дрыше:

drush php-eval '\Drupal::service("module_installer")->install(["my_custom_module"]);'
Стеф Ван Луверен
источник
Если вы хотите самоанализ IDE, используйте это: `` `/ ** @var \ Drupal \ Core \ Extension \ ModuleInstallerInterface $ moduleInstaller * / $ moduleInstaller = \ Drupal :: service (" module_installer "); $ moduleInstaller-> установить ([ 'readmehelp']); `` `
geek-merlin