获取当前模块名称

时间:2013-05-20 20:34:34

标签: drupal drupal-7

有没有办法获取您正在使用的模块的名称?我有一大堆模块(大约35个)具有一些常用功能。简而言之,我希望能够获得模块名称而无需在字符串中对其进行硬编码。希望这不是必要的,但这里是我想要的想法:

function MYMODULE_mycustom_hook($args) {
    $sCurrModule = 'MYMODULE';

    // Operations using $sCurrModule...
}

基本上,我可以用模块名称替换'MYMODULE'并完成它,但我想知道是否有办法以编程方式获得该值。我正在使用Drupal 7。

2 个答案:

答案 0 :(得分:21)

如果您的模块文件是sites/default/modules/MYMODULE/MYMODULE.module,那么模块名称是MYMODULE。

您可以使用以下命令在MYMODULE.module文件中以编程方式获取它:

$module_name = basename(__FILE__, '.module');

答案 1 :(得分:1)

尽管OP询问有关D7的问题,但这也是Drupal 8(D8)的解决方案:

/** @var \Drupal\Core\Extension\ModuleHandlerInterface $module_handler */
$module_handler = \Drupal::service('module_handler');

/** @var \Drupal\Core\Extension\Extension $module_object */
$module_object = $module_handler->getModule(basename(__FILE__, '.module'));

$module_name = $module_object->getName();

当然,您可以根据需要链接这些调用:

\Drupal::service('module_handler')->getModule(basename(__FILE__, '.module'))->getName()