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 中的顶级菜单类名称吗

4

1 回答 1

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,你可以templates/system/html在 modules.php 文件的文件夹中找到它的代码

于 2013-03-01T08:34:00.237 回答