Для назначения классов last
и first
на последний и первый элементы ветвей иерархического меню в текущей версии Joomla 2.5.4 я добавляю к default.php
(он скопирован из modules\mod_mainmenu\tmpl\
templates\mytemplate\html\mod_mainmenu\
) этот код:
после
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';
}
с:
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;
}
Существует возможность избавиться от таких, как добавление класса last
в последний элемент верхнего уровня ul
- можно заменить:
else if( in_array( $item->id, $last_items ) ) {
$class .= ' last';
}
с:
else if( in_array($item->id, $last_items) && $item->level_diff > 0 ) {
$class .= ' last';
}