如何以编程方式安装和启用模块?


17

在Drupal 6中有很多资源可以做到这一点,但是我没有找到Drupal 7的解决方案。

如何安装和启用所选模块?

Answers:


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自省,请使用以下命令:$ moduleInstaller-> install(['readmehelp']); ```
geek-merlin
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.