将自定义元素添加到Joomla中的主菜单项

Gru*_*ber 1 php joomla overriding menu joomla2.5

我想要做的事情就像概念一样简单,但我对php和joomla框架并不是那么好.目前,主菜单项生成如下:

<li class="item-101 current active">
  <a class="hide-text" href="#some-link">Home</a>
</li>
Run Code Online (Sandbox Code Playgroud)

我想要实现的是主菜单项中插入一个<i>元素,如下所示:

<li class="item-101 current active">
  <a class="hide-text" href="#some-link"><i class="icon-home"></i>Home</a>
</li>
Run Code Online (Sandbox Code Playgroud)

我怎样才能实现这一目标?我正在使用Joomla!2.5个大气压

我想有可能做一些像"如果这个菜单项是主页链接然后在<a>标签内添加此代码",但我真的不知道该怎么做,我的PHP不够强大:P

注:
我这样做,以实现一个简单的家庭图标,而不是的litteral 的菜单项.
正如类语法所暗示的那样,我正在使用twitter bootstrap css-framework,但我已经实现了Icomoon字体集(如在joomla 3.0中),而不是tbs Glyph-icons精灵图像.
不幸的是,使用基于字体的图标,文本规则也应用于图标,这就是我试图在<a>标签内插入自定义元素的原因,这样我就可以覆盖hide-text隐藏主图标的类.

谢谢你的任何建议!

小智 5

看一下菜单模块的模板文件.

/modules/mod_menu/tmpl/default.php

该模板为菜单模块构建HTML.

我刚刚检查了它在Joomla 2.5中是如何工作的,在/modules/mod_menu/tmpl/default.php模板中,列表是构建的.如果您只想添加主页链接,则必须添加一些代码.像这样的东西:

if($item->home == '1'){ $item->title = '<i class="icon-home"></i>' . $item->title; };
Run Code Online (Sandbox Code Playgroud)

在foreach循环下插入这个并且有一个go,它应该看起来像这样:

foreach ($list as $i => &$item) :
    // THIS ADDS THE <i> to only the HOME LINK
    if($item->home == '1'){ $item->title = '<i class="icon-home"></i>' . $item->title; }; 

    $class = 'item-'.$item->id;
    if ($item->id == $active_id) {
        $class .= ' current';
    }
Run Code Online (Sandbox Code Playgroud)

祝好运 ;)

  • 你可能是对的,但编辑核心Joomla文件是一个坏主意.我建议在添加此代码之前制作模板覆盖;) (5认同)