Comment installer et activer par programme un module?

17

Il y a beaucoup de ressources pour le faire dans Drupal 6, mais je n'ai pas trouvé de solution pour Drupal 7.

Comment puis-je installer et activer les modules sélectionnés?

Codium
la source

Réponses:

27

Il n'y a qu'une étape, en utilisant 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
la source
Est-ce que cela active les modules dans le même ordre que dans la baie?
Brent Connor
Pas de @BrentConnor, une carte de dépendances est calculée et elles sont installées dans n'importe quel ordre logique
Clive
8

Voici comment vous le feriez avec une mise à jour de la base de données à l'aide hook_update_Nd'un autre *.installfichier de module activé . Ensuite, vous pouvez visiter /update.phpdans le navigateur ou exécuter $ drush updbsur la ligne de commande pour faire déclencher ce code.

/**
 * 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
la source
1

Dans Drupal 7, il n'y a plus de drupal_install_modules () , donc si vous voulez forcer le processus d'installation du module par programme (s'il est déjà activé), vous pouvez utiliser:

module_invoke('module_name', 'install');

Pour l'activer, c'est simplement:

module_enable(array('module_name'));

Ou en utilisant drushdans le cadre du processus de déploiement:

drush -y en module_name
Kenorb
la source
0

Pour drupal 8, vous pouvez utiliser les éléments suivants:

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

Dans l'ivresse:

drush php-eval '\Drupal::service("module_installer")->install(["my_custom_module"]);'
Stef Van Looveren
la source
Si vous voulez une introspection IDE, utilisez ceci: `` `/ / @var \ Drupal \ Core \ Extension \ ModuleInstallerInterface $ moduleInstaller * / $ moduleInstaller = \ Drupal :: service (" module_installer "); $ moduleInstaller-> install (['readmehelp']); ``
geek-merlin