Templates 修改Joomla主菜单';使用模板覆盖的子菜单

Templates 修改Joomla主菜单';使用模板覆盖的子菜单,templates,joomla,overriding,Templates,Joomla,Overriding,我希望在Joomla模板的主菜单中实现以下功能: <ul class="topmenu"> <li><a class="nav_link" id="active" href="#">Home</a></li><span class="separator"></span> <li><a class="nav_link" href="#">About

我希望在Joomla模板的主菜单中实现以下功能:

    <ul class="topmenu">
         <li><a class="nav_link" id="active" href="#">Home</a></li><span class="separator"></span>
         <li><a class="nav_link" href="#">About Us</a></li><span class="separator"></span>
         <li><a class="nav_link" href="#">Services</a>
<div class="subnav_wrapper">
      <ul class="subnav">
       <li><a class="sub_nav_link" href="#">Custom Software</a></li>
       <li><a class="sub_nav_link" href="#">Software Solutions</a></li>
       <li><a class="sub_nav_link" href="#">Mobile SMS</a></li>
       <li><a class="sub_nav_link" href="#">Web Solutions</a></li>
       <li class="last"><a class="sub_nav_link" href="#">ICT Consultancy</a></li>
      </ul>
      </div>
     </li><span class="separator"></span>
</ul>
但是上面在顶级ul的最后一项中添加了类


使用模板覆盖方法是否可以达到预期效果?

不确定菜单的模板覆盖。你可以看看哪一个是定制菜单的好模块


或者,如果您只想设计菜单项的样式,您可以使用ulli:CSS中的最后一个子项。请注意,并非所有浏览器都完全支持此功能。

对于当前2.5.4版Joomla中层次菜单分支最后和第一项的
last
first
类预约,我将添加到
default.php
(它从
modules\mod\u main menu\tmpl\
复制到
templates\mytemplate\html\mod\u main menu\
)此代码:

之后:

defined('_JEXEC') or die;
插入:

$last_items = array();
foreach( array_reverse( $list, true ) as $v ) {
    if( ! isset( $last_items[$v->parent_id] ) )
        $last_items[$v->parent_id] = $v->id;
}
$first_start = true;
并替换:

if ($item->deeper) {
    $class .= ' deeper';
}
与:

有可能删除,例如在顶层的最后一项中添加一个
–可以替换为:

else if( in_array( $item->id, $last_items ) ) {
    $class .= ' last';
}
与:

if( $first_start ) {
    $class .= ' first';
    $first_start = false;
}
else if( in_array( $item->id, $last_items ) ) {
    $class .= ' last';
}

if ($item->deeper) {
    $class .= ' deeper';
    $first_start = true;
}
else if( in_array( $item->id, $last_items ) ) {
    $class .= ' last';
}
else if( in_array($item->id, $last_items) && $item->level_diff > 0 ) {
    $class .= ' last';
}