Jak programowo zainstalować i włączyć moduł?

17

Jest wiele zasobów do zrobienia tego w Drupal 6, ale nie znalazłem rozwiązania dla Drupal 7.

Jak mogę zainstalować i włączyć wybrane moduły?

Codium
źródło

Odpowiedzi:

27

Jest tylko jeden krok, używając 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
źródło
Czy to umożliwia moduły w tej samej kolejności, w jakiej znajdują się w tablicy?
Brent Connor
Nie @BrentConnor, obliczana jest mapa zależności i są one instalowane w dowolnej kolejności
Clive
8

Oto, jak zrobiłbyś to z aktualizacją bazy danych przy użyciu pliku hook_update_Ninnego włączonego modułu *.install. Następnie możesz odwiedzić /update.phpw przeglądarce lub uruchomić $ drush updbw wierszu polecenia, aby uruchomić ten kod.

/**
 * 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
źródło
1

W Drupal 7 nie ma już drupal_install_modules () , dlatego jeśli chcesz wymusić programowy proces instalacji modułu (jeśli jest już włączony), możesz użyć:

module_invoke('module_name', 'install');

Aby włączyć, po prostu:

module_enable(array('module_name'));

Lub używając drushjako część procesu wdrażania:

drush -y en module_name
kenorb
źródło
0

W przypadku drupal 8 możesz użyć:

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

W pośpiechu:

drush php-eval '\Drupal::service("module_installer")->install(["my_custom_module"]);'
Stef Van Looveren
źródło
Jeśli chcesz introspekcji IDE, użyj tego: `` / ** @var \ Drupal \ Core \ Extension \ ModuleInstallerInterface $ moduleInstaller * / $ moduleInstaller = \ Drupal :: service ("module_installer"); $ moduleInstaller-> install (['readmehelp']); ``
geek-merlin