Wie installiere und aktiviere ich ein Modul programmgesteuert?

17

In Drupal 6 gibt es eine Menge Ressourcen, aber für Drupal 7 habe ich keine Lösung gefunden.

Wie kann ich ausgewählte Module installieren und aktivieren?

Codium
quelle

Antworten:

27

Es gibt nur einen Schritt 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
quelle
Aktiviert dies die Module in derselben Reihenfolge wie im Array?
Brent Connor
Nein @BrentConnor, eine Abhängigkeitskarte wird berechnet und in einer sinnvollen Reihenfolge installiert
Clive
8

Hier erfahren Sie, wie Sie dies mit einem Datenbankupdate hook_update_Naus der *.installDatei eines anderen aktivierten Moduls tun . Dann können Sie /update.phpden Browser besuchen oder $ drush updbin der Befehlszeile ausführen , um diesen Code auszulösen.

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

In Drupal 7 gibt es kein drupal_install_modules () mehr. Wenn Sie den Modulinstallationsprozess also programmgesteuert erzwingen möchten (sofern er bereits aktiviert ist), können Sie Folgendes verwenden:

module_invoke('module_name', 'install');

Zum Aktivieren ist es einfach:

module_enable(array('module_name'));

Oder drushals Teil des Bereitstellungsprozesses verwenden:

drush -y en module_name
Kenorb
quelle
0

Für Drupal 8 können Sie Folgendes verwenden:

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

In drush:

drush php-eval '\Drupal::service("module_installer")->install(["my_custom_module"]);'
Stef Van Looveren
quelle
Wenn Sie IDE-Introspection wünschen, verwenden Sie Folgendes: `` `/ ** @var \ Drupal \ Core \ Extension \ ModuleInstallerInterface $ moduleInstaller * / $ moduleInstaller = \ Drupal :: service (" module_installer "); $ moduleInstaller-> install (['readmehelp']); `` `
Geek-Merlin