Действие по включению модуля?


Я хочу показывать сообщение при включении модуля. Я использовал hook_modules_enabled, и он показывает мне сообщение при включении нового модуля.

Теперь мне нужно имя машины с включенным модулем в аргументе hooks. Но hook_modules_enabled($modules) возвращает массив модулей в аргументе.

Например:

Когда просмотры включены, мне нужно задать сообщение следующим образом:

" Просмотры Модуль включен"

Здесь мне нужно "просмотры" (т.Е. имя модуля) в качестве аргумента в hook_modules_enabled, чтобы напечатать его в сообщении, но он возвращает мне массив.

Как я могу этого добиться. Есть ли для этого какой-нибудь другой крючок?

 1
Author: Pravin Ajaaz, 2015-05-26

3 answers

Аргумент $modules в hook_modules_enabled($modules) возвращает массив включенных модулей. Вы должны пройти по массиву, чтобы распечатать сообщение.

Примечание: Но в массиве будет только имя компьютера модуля.

Например:

function MY_MODULE_modules_enabled($modules) {
  foreach ($modules as $module) {
    // To get Module Name 
    $module_info = system_get_info('module', $module);
    $module_name = $module_info['name'];
    //Loop through the modules and set the message. 
    $msg= "$module_name is enabled";
    drupal_set_message(t($msg), 'status', FALSE);
  }
}
 0
Author: Pravin Ajaaz, 2015-05-26 15:52:07

hook_module_enable() должен выполнить эту работу, если только я чего-то не упустил из вашего вопроса.

Выполните необходимые действия после включения модуля.

Крючок вызывается каждый раз, когда модуль включен. Это должно быть реализовано в файле .install модуля. Реализация может зависеть от загружаемого файла .module.

 0
Author: Chapabu, 2015-05-26 11:28:19

Я не вижу никаких других крючков, которые вы могли бы вызвать; вы могли бы сами отслеживать модули, сравнивать их с тем, что вы получаете в hook_modules_enabled(), а затем делать все, что хотите, для каждого из включенных/установленных модулей.

Вот общие шаги:

  1. После установки вашего пользовательского модуля (или в крючке обновления) сохраните снимок того, что установлено в системе в данный момент. Это вошло бы в файл .install, и вы могли бы использовать часть кода из этого ответ. Прямой запрос таблицы {system} может даже сработать. Храните все в виде массива, используя variable_set().

  2. Используйте hook_modules_enabled (или hook_modules_installed) для сравнения нового списка со старым. Храните различия в отдельном массиве (например, array_diff()).

  3. Для каждого из недавно установленных/включенных модулей выполните свое действие.

  4. Обновите пользовательскую переменную для хранения списка модулей, используя variable_set().

Дайте мне знать, если я неправильно понял вопрос.

 0
Author: Aram Boyajyan, 2017-04-13 12:47:04