Если я напишу в меню ссылку '/user', то каждому пользователю она автоматически будет преобразовываться, например, в '/user/1' (профиль данного юзера).
Как мне из ссылки 'user/1/edit/rezume_p' получить ссылку для меню, универсальную для всех пользователей? То есть должна изменяться только цифра, в данном случае - 1.
Комментарии
user/%/edit/rezume_p
Сделал так user/%/edit/rezume_p
Однако в меню теперь ссылка 'user/%25/edit/rezume_p'. Хотя вместо %25 должно быть 1.
Пендыр... ты ее в меню напрямую суешь?
Такая нотация в модулях только работает... То что попадет в пути под % передается в функцию в качестве параметра и выведит страницу с резюме для каждого пользователя. Причем и модуль и функцию надо писать самому.
В реализации hook_menu модуля user это место выглядит так:
'title' => 'My account',
'title callback' => 'user_page_title',
'title arguments' => array(1),
'page callback' => 'user_view',
'page arguments' => array(1),
'access callback' => 'user_view_access',
'access arguments' => array(1),
'parent' => '',
'file' => 'user.pages.inc',
);
Все функции кроме user_view доступны в файле user.module.
Попробуй написать свой модуль и сделать примерно также, только колбек user_view заменить на свою функцию.
Хотя боюсь правильнее надо как-то c hook_user работать.
Спасибо. Сделал. Вот основной код модуля:
global $user;
$items = array();
if($may_cache){
$items[] = array(
'path' => 'profmenu',
'title' => t('Rezume'),
'description' => t('Rezume'),
'access' => ($user->uid),
'callback' => 'profile_go',
'callback arguments' => array($user->uid),
'type' => MENU_DYNAMIC_ITEM | MENU_NORMAL_ITEM,
'weight' => 10,
);
}
return $items;
}
function profile_go ($uid){
drupal_goto('user/'.$uid.'/edit/rezume_p');
}
Вот не знаю, как будет работать эта строчка...
'access' => ($user->uid),
И потом если модуль называется profilemenu, то все его функции должны начинаться с этого префикса...
Строка 'access' => ($user->uid) и в стандартном модуле user используется.
А на счет префиксов Вы правы. Исправлю.