¿Cómo instalo y habilito mediante programación un módulo?

17

Hay muchos recursos para hacerlo en Drupal 6, pero no encontré una solución para Drupal 7.

¿Cómo puedo instalar y habilitar los módulos seleccionados?

Codium
fuente

Respuestas:

27

Solo hay un paso, 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
fuente
¿Esto habilita los módulos en el mismo orden en que están en la matriz?
Brent Connor
No @BrentConnor, se calcula un mapa de dependencia y se instalan en el orden que tenga sentido
Clive
8

Así es como lo haría con una actualización de la base de datos utilizando hook_update_Notro *.installarchivo de módulo habilitado . Luego puede visitarlo /update.phpen el navegador o ejecutarlo $ drush updben la línea de comando para que se active este código.

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

En Drupal 7 no hay más drupal_install_modules () , por lo tanto, si desea forzar el proceso de instalación del módulo mediante programación (si ya está habilitado), puede usar:

module_invoke('module_name', 'install');

Para habilitar, es simplemente:

module_enable(array('module_name'));

O utilizando drushcomo parte del proceso de implementación:

drush -y en module_name
kenorb
fuente
0

Para drupal 8 puede usar lo siguiente:

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

En drush:

drush php-eval '\Drupal::service("module_installer")->install(["my_custom_module"]);'
Stef Van Looveren
fuente
Si desea la introspección IDE, use esto: `` `/ ** @var \ Drupal \ Core \ Extension \ ModuleInstallerInterface $ moduleInstaller * / $ moduleInstaller = \ Drupal :: service (" module_installer "); $ moduleInstaller-> install (['readmehelp']); `` `
geek-merlin