Como instalo e habilito programaticamente um módulo?

17

Há muito recurso para fazer isso no Drupal 6, mas não encontrei uma solução para o Drupal 7.

Como posso instalar e ativar os módulos selecionados?

Códio
fonte

Respostas:

27

Há apenas uma etapa, usando 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);
Clive
fonte
Isso habilita os módulos na mesma ordem em que estão na matriz?
Brent Connor
Sem @BrentConnor, um mapa de dependência é calculado e eles estão instalados em qualquer ordem sentido make
Clive
8

Aqui está como você faria isso com uma atualização do banco de dados usando a hook_update_Npartir de outro *.installarquivo do módulo ativado . Em seguida, você pode visitar /update.phpno navegador ou executar $ drush updbna linha de comando para que esse código seja acionado.

/**
 * 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
fonte
1

No Drupal 7, não há mais drupal_install_modules () ; portanto, se você deseja forçar o processo de instalação do módulo programaticamente (se já estiver ativado), pode usar:

module_invoke('module_name', 'install');

Para ativar, é simplesmente:

module_enable(array('module_name'));

Ou usando drushcomo parte do processo de implantação:

drush -y en module_name
kenorb
fonte
0

Para o drupal 8, você pode usar o seguinte:

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

Em drush:

drush php-eval '\Drupal::service("module_installer")->install(["my_custom_module"]);'
Stef Van Looveren
fonte
Se você deseja uma introspecção de IDE, use este: `` `` / ** @var \ Drupal \ Core \ Extension \ ModuleInstallerInterface $ moduleInstaller * / $ moduleInstaller = \ Drupal :: service ("module_installer"); $ moduleInstaller-> install (['readmehelp']); ``
geek-merlin