ฉันจะติดตั้งและเปิดใช้งานโมดูลโดยทางโปรแกรมได้อย่างไร


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

สิ่งนี้เปิดใช้งานโมดูลในลำดับเดียวกันกับที่อยู่ในอาร์เรย์หรือไม่?
Brent Connor

ไม่ @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:

drush php-eval '\Drupal::service("module_installer")->install(["my_custom_module"]);'

หากคุณต้องการวิปัสสนา IDE ให้ใช้สิ่งนี้: `` `/ ** @var \ Drupal \ Core \ Extension \ ModuleInstallerInterface $ moduleInstaller * / $ moduleInstaller = \ Drupal :: service (" module_installer "); $ moduleInstaller-> ติดตั้ง ([ 'readmehelp']); `` `
geek-merlin
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.