menu_get_item
includes/menu.inc, строка 301
- Версии
- 5
menu_get_item(
$mid, $path = NULL,$reset= FALSE)- 6
menu_get_item($path = NULL, $router_item = NULL)
Получает элемент роутера.
Параметры
$path
Путь, например 'node/5'
. Функция найдет соответствующий 'node/%'
и возвратит его.
$router_item
Параметр только для внутренноего использования.
Возвращаемое значение
Элемент роутера — это ассоциативный массив, соответствующий еденичной записи в таблице menu_router. Значение ключа "map"
содержит загруженные объекты. Значение ключа "access"
содержит TRUE
, если текущий пользователь имеет доступ к странице. Значения ключей "title"
, "page_arguments"
, "access_arguments"
заполняются значениями из базы данных и загруженных объектов.
Связанные темы
Код
<?php
function menu_get_item($path = NULL, $router_item = NULL) {
static $router_items;
if (!isset($path)) {
$path = $_GET['q'];
}
if (isset($router_item)) {
$router_items[$path] = $router_item;
}
if (!isset($router_items[$path])) {
$original_map = arg(NULL, $path);
$parts = array_slice($original_map, 0, MENU_MAX_PARTS);
list($ancestors, $placeholders) = menu_get_ancestors($parts);
if ($router_item = db_fetch_array(db_query_range('SELECT * FROM {menu_router} WHERE path IN ('. implode (',', $placeholders) .') ORDER BY fit DESC', $ancestors, 0, 1))) {
$map = _menu_translate($router_item, $original_map);
if ($map === FALSE) {
$router_items[$path] = FALSE;
return FALSE;
}
if ($router_item['access']) {
$router_item['map'] = $map;
$router_item['page_arguments'] = array_merge(menu_unserialize($router_item['page_arguments'], $map), array_slice($map, $router_item['number_parts']));
}
}
$router_items[$path] = $router_item;
}
return $router_items[$path];
}
?>
Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии