function _menu_get_active_trail_in_submenu in Drupal 5
Same name and namespace in other branches
- 4 includes/menu.inc \_menu_get_active_trail_in_submenu()
Find the active trail through a specific subsection of the menu tree.
Parameters
$pid: The root item from which the active trail must descend.
2 calls to _menu_get_active_trail_in_submenu()
- menu_in_active_trail_in_submenu in includes/
menu.inc - Returns TRUE when the menu item is in the active trail within a specific subsection of the menu tree.
- menu_primary_links in includes/
menu.inc - Returns an array containing the primary links. Can optionally descend from the root of the Primary links menu towards the current node for a specified number of levels and return that submenu. Used to generate a primary/secondary menu from different…
File
- includes/
menu.inc, line 965 - API for the Drupal menu system.
Code
function _menu_get_active_trail_in_submenu($pid) {
static $trails;
if (!isset($trails)) {
// Find all menu items which point to the current node and for each
// follow the parents up the chain to build an active trail.
$trails = array();
$menu = menu_get_menu();
$path = $_GET['q'];
$count = 0;
while ($path && !$count) {
foreach ($menu['items'] as $key => $item) {
if (isset($item['path']) && ($item['path'] == $path || $item['path'] == '<front>' && drupal_is_front_page())) {
$trails[$count] = array();
$mid = $key;
while ($mid && $menu['items'][$mid]) {
array_unshift($trails[$count], $mid);
$mid = $menu['items'][$mid]['pid'];
}
$count++;
}
}
$path = substr($path, 0, strrpos($path, '/'));
}
}
if ($trails) {
foreach ($trails as $trail) {
$count_trail = count($trail);
for ($i = 0; $i < $count_trail; $i++) {
if ($trail[$i] == $pid) {
// Return a trail from $pid down to the current page inclusive.
for (; $i < $count_trail; $i++) {
$subtrail[] = $trail[$i];
}
return $subtrail;
}
}
}
}
return NULL;
}