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

时间:2012-10-25 16:51:32

标签: php joomla menu override joomla2.5

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

<li class="item-101 current active">
  <a class="hide-text" href="#some-link">Home</a>
</li>

我想要实现的是在 home 菜单项中插入<i>元素,像这样:

<li class="item-101 current active">
  <a class="hide-text" href="#some-link"><i class="icon-home"></i>Home</a>
</li>

我怎样才能做到这一点?我正在使用Joomla! 2.5 atm

我想有可能做类似“如果这个菜单项是主页链接然后在<a>标签内添加此代码”,但我真的不知道该怎么做,我的php不强够了:P

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

感谢您的任何建议!

2 个答案:

答案 0 :(得分: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; };

在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';
    }

祝你好运;)

答案 1 :(得分:0)

我也一直关注这个指南,(感谢Gruber和Mark Vink)但是使用字形而不是IcoMoon。我发现上面的例子中存在语法错误。版本帽为我工作是

foreach ($list as $i => &$item) { 

if($item->home == '1')$item->title = '<span class="glyphicon glyphicon-home" aria-hidden="true"></span>' .$item->title; 
$class = 'item-' . $item->id

等...