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


17

Для цього в Drupal 6 є багато ресурсів, але я не знайшов рішення для Drupal 7.

Як я можу встановити та включити вибрані модулі?

Відповіді:


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, карта залежностей обчислюється, і вони встановлюються в будь-якому порядку, що має сенс
Clive

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);
}

1

У Drupal 7 більше немає drupal_install_modules () , тому, якщо ви хочете програмно примусити процес установки модуля (якщо він уже включений), ви можете використовувати:

module_invoke('module_name', 'install');

Щоб увімкнути, це просто:

module_enable(array('module_name'));

Або використовуючи drushяк частину процесу розгортання:

drush -y en module_name

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-> install (['readmehelp']); `` `
geek-merlin
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.