我正在尝试创建一个joomla 2.5模板。我在index.php中使用以下代码来显示顶部菜单项。
<?php if ($this->countModules('topmenu')): ?>
<hr>
<div class="container">
<jdoc:include type="modules" name="topmenu"/>
</div>
<?php endif; ?>
以上代码生成以下html
<ul class="menunav">
<li class="item-464 active"><a href="/joomla2/" >Home</a></li>
<li class="item-444"><a href="/joomla2/index.php/sample-sites" >Sample Sites</a>
</li><li class="item-207"><a href="http://joomla.org" >Joomla.org</a></li>
</ul>
问题是我用来设计顶级菜单项的类名是nav
,如果我有像下面这样的html,菜单应该可以正常工作
<ul class="nav">
<li class="active"><a href="#">Home</a></li>
<li><a href="#">Sample Sites</a></li>
<li><a href="#">Joomla ORG</a></li>
</ul>
我听说过class suffix,但我不想从管理面板上完成它。因为每次新用户使用我的模板时都必须从管理面板添加类后缀。
我尝试过以下代码,但它没有改变任何内容:
<script type="text/javascript">
$(document).ready(function() {
$('.menunav').removeClass('menunav').addClass('nav');
});
</script>
您能否告诉我如何更改joomla 2.5中的顶级菜单类名称
答案 0 :(得分:4)
首先我做了一个错误的答案,你可以检查一下,它可能有用。
现在真正的答案。您需要覆盖默认的菜单输出样式。在您的模板文件夹中,创建文件夹html,并在创建文件夹mod_menu中。现在从default.php
复制modules\mod_menu\tmpl
个文件。
打开文件并更改行
<ul class="menu<?php echo $class_sfx;?>"
到
<ul class="nav"
。
Joomla现在将使用您的覆盖来渲染菜单。这样,您可以覆盖任何Joomla输出而无需更改核心文件。
现在,以前创建自定义模块输出的答案可能对某人有用:
您需要创建新的module chrome
。在模板html文件夹中,创建名为modules.php
的文件。
在里面,制作一个这样的功能
defined('_JEXEC') or die;
function modChrome_nosfx($module, &$params, &$attribs)
{
if (!empty ($module->content)) : ?>
<div class="moduletable">
<?php if ($module->showtitle != 0) : ?>
<h3><?php echo $module->title; ?></h3>
<?php endif; ?>
<?php echo $module->content; ?>
</div>
<?php endif;
}
这样您就可以创建自定义模块输出。
然后,在您的模板文件中,包含如下模块:
<?php if ($this->countModules('topmenu')): ?>
<hr>
<div class="container">
<jdoc:include type="modules" name="topmenu" style="nosfx" />
</div>
<?php endif; ?>
添加style="nosfx"
后,您的新功能将用于渲染模块。默认样式为xhtml
,您可以在modules.php文件的templates/system/html
文件夹中找到它的代码