menu_get_ancestors
includes/menu.inc, строка 200
- Версии
- 6
menu_get_ancestors($parts)
Returns the ancestors (and relevant placeholders) for any given path.
For example, the ancestors of node/12345/edit are:
- node/12345/edit
- node/12345/%
- node/%/edit
- node/%/%
- node/12345
- node/%
- node
'masks'
is built in menu_rebuild()
.
Параметры
$parts
An array of path parts, for the above example
array('node'
, '12345'
, 'edit'
).
Возвращаемое значение
An array which contains the ancestors and placeholders. Placeholders
simply contain as many '%s'
as the ancestors.
Связанные темы
Код
<?php
function menu_get_ancestors($parts) {
$number_parts = count($parts);
$placeholders = array();
$ancestors = array();
$length = $number_parts - 1;
$end = (1 << $number_parts) - 1;
$masks = variable_get('menu_masks', array());
// Only examine patterns that actually exist as router items (the masks).
foreach ($masks as $i) {
if ($i > $end) {
// Only look at masks that are not longer than the path of interest.
continue;
}
elseif ($i < (1 << $length)) {
// We have exhausted the masks of a given length, so decrease the length.
--$length;
}
$current = '';
for ($j = $length; $j >= 0; $j--) {
if ($i & (1 << $j)) {
$current .= $parts[$length - $j];
}
else {
$current .= '%';
}
if ($j) {
$current .= '/';
}
}
$placeholders[] = "'%s'";
$ancestors[] = $current;
}
return array($ancestors, $placeholders);
}
?>
Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии