我正在使用Joomla 3,我有一个名为“我们是谁”的模块,它正在“top_row2”位置显示。我正在尝试获取此模块ID和模块名称。
在搜索之后,我找到了一些似乎对我不起作用的解决方案。
解决方案1
jimport( 'joomla.application.module.helper' );
$module = JModuleHelper::getModule('Who we Are');
echo $module->id;
解决方案2
jimport( 'joomla.application.module.helper' );
$module = JModuleHelper::getModules('Who we Are');
echo $module->id;
//Note the "s" in getModules
解决方案3
global $module;
$module->id;
$module->title;
我正在使用此解决方案来覆盖此模块的PHP文件。
Location :: templates \ corporate_response \ html \ mod_mymodule_item.php
您可以在“Module Class Suffix”下定义自己的唯一类,并在模块覆盖项目页面中执行条件检查以将哪个模块呈现到页面中
您可以按位置获取所有模块,然后按标题选择:
$module = false;
if ($modules = JModuleHelper::getModules('top_row2')) {
foreach ($modules as $module2) {
if ($module2->title == 'Who we Are') {
$module = $module2;
break;
}
}
}
if ($module) {
printf(
'Found module with name "%s" and id "%d"',
$module->name,
$module->id
);
} else {
echo "Found no matching module.";
}
这可能有助于解释在覆盖中调用模块。打电话给Joomla!模板中带有标题的模块覆盖:
jimport('joomla.application.module.helper');
$modules = JModuleHelper::getModules('position');
foreach($modules as $module) {
echo '<h3>' . $module->title . '</h3>';
echo JModuleHelper::renderModule($module);
}
这将调用模块ID。
echo $module->id;
这将调用H3中的模块标题,根据您的需要进行调整。
echo '<h3>' . $module->title . '</h3>';
这部分将呈现模块。
echo JModuleHelper::renderModule($module);