Created
July 13, 2012 20:30
-
-
Save betweenbrain/3107246 to your computer and use it in GitHub Desktop.
Ye olde first and last menu item classes override for Joomla 2.5 / 3.0
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* @package Joomla.Site | |
* @subpackage mod_menu | |
* | |
* @copyright Copyright (C) 2005 - 2012 Open Source Matters, Inc. All rights reserved. | |
* @license GNU General Public License version 2 or later; see LICENSE.txt | |
*/ | |
defined('_JEXEC') or die; | |
// Note. It is important to remove spaces between elements. | |
// Establish a counter for placement. | |
$count = 0; | |
?> | |
<ul class="menu<?php echo $class_sfx;?>"<?php | |
$tag = ''; | |
if ($params->get('tag_id')!= null) | |
{ | |
$tag = $params->get('tag_id').''; | |
echo ' id="'.$tag.'"'; | |
} | |
?>> | |
<?php | |
foreach ($list as $i => &$item) : | |
$class = 'item-'.$item->id; | |
if ($item->id == $active_id) { | |
$class .= ' current'; | |
} | |
if (in_array($item->id, $path)) { | |
$class .= ' active'; | |
} | |
elseif ($item->type == 'alias') { | |
$aliasToId = $item->params->get('aliasoptions'); | |
if (count($path) > 0 && $aliasToId == $path[count($path)-1]) { | |
$class .= ' active'; | |
} | |
elseif (in_array($aliasToId, $path)) { | |
$class .= ' alias-parent-active'; | |
} | |
} | |
// Negate count if next item is a child. Will be 0 for first child once incremented. Can't use $item->parent in case sub-menu isn't rendered. | |
if ($item->deeper) { | |
$class .= ' deeper'; | |
$count = -1; | |
} | |
// If first item to be counted or first in the list array. | |
if ($count == 0 || $i == 0) { | |
$class .= ' first'; | |
} | |
// Last item of the level or last in the list array. | |
if ($item->shallower || $item == end($list)) { | |
$class .= ' last'; | |
} | |
if ($item->parent) { | |
$class .= ' parent'; | |
} | |
if (!empty($class)) { | |
$class = ' class="'.trim($class) .'"'; | |
} | |
echo '<li'.$class.'>'; | |
// Render the menu item. | |
switch ($item->type) : | |
case 'separator': | |
case 'url': | |
case 'component': | |
require JModuleHelper::getLayoutPath('mod_menu', 'default_'.$item->type); | |
break; | |
default: | |
require JModuleHelper::getLayoutPath('mod_menu', 'default_url'); | |
break; | |
endswitch; | |
// The next item is deeper. | |
if ($item->deeper) { | |
echo '<ul>'; | |
} | |
// The next item is shallower. | |
elseif ($item->shallower) { | |
echo '</li>'; | |
echo str_repeat('</ul></li>', $item->level_diff); | |
} | |
// The next item is on the same level. | |
else { | |
echo '</li>'; | |
} | |
// Increment the count | |
$count++; | |
endforeach; | |
?></ul> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment