更改joomla顶级菜单的类名称

时间:2013-03-01 05:55:36

标签: joomla joomla2.5

我正在尝试创建一个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中的顶级菜单类名称

1 个答案:

答案 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文件夹中找到它的代码