尝试使用此代码在自定义模板上呈现菜单模块
jimport( 'joomla.application.module.helper' );
$module = JModuleHelper::getModule( 'menu' );
$attribs = array('style' => 'mainnav');
$module->params = "menutype=" .$mainmenu ."\nshowAllChildren=1";
echo JModuleHelper::renderModule($module, $attribs);
菜单仅在我发布了另一个菜单模块时才有效,所以我确信这只需要一行代码就可以使其无需发布菜单模块即可。
菜单存在,此菜单的模块不存在,我正在尝试使用此代码创建它。
请帮忙。
答案 0 :(得分:5)
代码工作正常我只做了一个小修正:
jimport( 'joomla.application.module.helper' );
$module = JModuleHelper::getModule( 'mod_menu' );
$attribs = array('style' => 'mainnav');
$module->params = "menutype=" .$mainmenu ."\nshowAllChildren=1";
echo JModuleHelper::renderModule($module, $attribs);
在第二行,调用应该是“mod_menu”而不仅仅是“menu”,这使代码工作得很完美:)
答案 1 :(得分:0)
为什么不只使用include模块?
<jdoc:include type="modules" name="mainnav" style="mainnav" />
这将允许您发布您不在该位置的任何模块。
否则getModule
函数的工作方式如下:
JModuleHelper::getModule( 'position', 'title' );
根据Joomla! API因此您需要传递两个参数。
答案 2 :(得分:0)
我使用此代码通过id
呈现其他模块$mod_id = $params->get('mod_id');
if ($type == 'logout' && $mod_id != ''){
$document = &JFactory::getDocument();
$renderer = $document->loadRenderer('module');
$db =& JFactory::getDBO();
if ($jVersion=='1.5') {
$query = 'SELECT id, title, module, position, params'
. ' FROM #__modules AS m'
. ' WHERE id='.intval($mod_id);
} else {
$query = 'SELECT id, title, module, position, content, showtitle, params'
. ' FROM #__modules AS m'
. ' WHERE m.id = '.intval($mod_id);
}
$db->setQuery( $query );
if ($mod = $db->loadObject()){
$file = $mod->module;
$custom = substr( $file, 0, 4 ) == 'mod_' ? 0 : 1;
$modu->user = $custom;
// CHECK: custom module name is given by the title field, otherwise it's just 'om' ??
$mod->name = $custom ? $mod->title : substr( $file, 4 );
$mod->style = null;
$mod->position = strtolower($mod->position);
echo $renderer->render($mod, array());
}
}
答案 3 :(得分:0)
在此位置使用此100%渲染模块。
<?php
$document = &JFactory::getDocument();
$renderer = $document->loadRenderer('modules');
$options = array('style' => 'xhtml');
$position = 'article-banners';
echo $renderer->render($position, $options, null);
?>
$ position是指模块位置,可能不止一个...... $ style - none,rounded,xhtml ...