Drupal получить информацию о модуле?
Есть ли какая-либо функция в Drupal, как get_module_info('MODULE_NAME')
или я должен разобрать info
файл?
4 ответа
drupal_parse_info_file()
является ближайшей функцией, но она принимает путь к файлу, а не имя модуля, поэтому сначала нужно преобразовать имя в путь:
$path = drupal_get_path('module', $name) . '/' . $name . '.info';
$info = drupal_parse_info_file($path);
Несколько более простой метод (drupal 7 и выше) - использовать функцию system_get_info.
Если вы используете модуль Features, он создал надежную структуру для взаимодействия с системной таблицей, которая легко адаптируется для любого сбора информации о модуле.
Чтобы получить информацию о модуле, используйте features_get_modules($module_name)
, Это отправляет специфичный для модуля запрос features_get_info()
на линии 475 фич. модуля.
Информация кэшируется, и вы можете использовать hook_system_info_alter() для изменения нужных вам значений. Обратите внимание, что эта функциональность не затрагивается ничем в ядре Drupal и полезна только для ваших собственных функциональных возможностей модуля.
Для Друпала 8.6+:
$info = \Drupal::service("extension.list.module")->getExtensionInfo('mymodule');