Действие по включению модуля?
Я хочу показывать сообщение при включении модуля. Я использовал hook_modules_enabled
, и он показывает мне сообщение при включении нового модуля.
Теперь мне нужно имя машины с включенным модулем в аргументе hooks.
Но hook_modules_enabled($modules)
возвращает массив модулей в аргументе.
Например:
Когда просмотры включены, мне нужно задать сообщение следующим образом:
" Просмотры Модуль включен"
Здесь мне нужно "просмотры" (т.Е. имя модуля) в качестве аргумента в hook_modules_enabled
, чтобы напечатать его в сообщении, но он возвращает мне массив.
Как я могу этого добиться. Есть ли для этого какой-нибудь другой крючок?
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);
}
}
hook_module_enable()
должен выполнить эту работу, если только я чего-то не упустил из вашего вопроса.
Выполните необходимые действия после включения модуля.
Крючок вызывается каждый раз, когда модуль включен. Это должно быть реализовано в файле .install модуля. Реализация может зависеть от загружаемого файла .module.
Я не вижу никаких других крючков, которые вы могли бы вызвать; вы могли бы сами отслеживать модули, сравнивать их с тем, что вы получаете в hook_modules_enabled()
, а затем делать все, что хотите, для каждого из включенных/установленных модулей.
Вот общие шаги:
После установки вашего пользовательского модуля (или в крючке обновления) сохраните снимок того, что установлено в системе в данный момент. Это вошло бы в файл
.install
, и вы могли бы использовать часть кода из этого ответ. Прямой запрос таблицы{system}
может даже сработать. Храните все в виде массива, используяvariable_set()
.Используйте
hook_modules_enabled
(илиhook_modules_installed
) для сравнения нового списка со старым. Храните различия в отдельном массиве (например,array_diff()
).Для каждого из недавно установленных/включенных модулей выполните свое действие.
Обновите пользовательскую переменную для хранения списка модулей, используя
variable_set()
.
Дайте мне знать, если я неправильно понял вопрос.