【问题标题】:Changing the class name of joomla top menu更改 joomla 顶部菜单的类名
【发布时间】:2013-03-01 05:55:36
【问题描述】:

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

【问题讨论】:

  • 试试这个,它可能会工作。 jQuery(".menunav").addClass('nav'); jQuery(".nav").removeClass('menunav');两者都是一样的,但也试试这个。
  • @JobinJose 感谢您的回复。我试过你的代码。我也试过var $j = jQuery.noConflict(); 还是不行:(
  • “每次新用户使用我的模板都必须从管理面板添加类后缀”是什么意思。
  • @Toretto。我的意思是,如果您使用我的模板,为了使其完美运行,您必须从管理面板添加类后缀。每个人都必须这样做.. :)
  • 我不认为每个用户都需要从后端输入类后缀。

标签: joomla joomla2.5


【解决方案1】:

首先我答错了,你可以在下面查看,它可能有用。

现在是真正的答案。您需要覆盖菜单输出的默认样式。在您的模板文件夹中,创建文件夹 html,并在其中创建文件夹 mod_menu。现在从modules\mod_menu\tmpl复制default.php文件。

打开文件并换行

&lt;ul class="menu&lt;?php echo $class_sfx;?&gt;"

&lt;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文件夹中找到它的代码

【讨论】:

  • 非常感谢您的回答。我会检查它并给你一个反馈。再次非常感谢:)
  • @MarkoD 我已经尝试过了,它确实有效,但是额外的类添加到了所有菜单中。如何仅将其应用于顶部导航?
猜你喜欢
  • 1970-01-01
  • 2013-05-25
  • 1970-01-01
  • 1970-01-01
  • 2011-06-29
  • 1970-01-01
  • 2017-07-04
  • 2016-04-13
  • 1970-01-01
相关资源
最近更新 更多