Универсальная ссылка на документ

Главные вкладки

Аватар пользователя VanDerKeen VanDerKeen 25 сентября 2008 в 0:02

Если я напишу в меню ссылку '/user', то каждому пользователю она автоматически будет преобразовываться, например, в '/user/1' (профиль данного юзера).

Как мне из ссылки 'user/1/edit/rezume_p' получить ссылку для меню, универсальную для всех пользователей? То есть должна изменяться только цифра, в данном случае - 1.

Комментарии

Аватар пользователя direqtor direqtor 25 сентября 2008 в 12:43

Пендыр... ты ее в меню напрямую суешь?
Такая нотация в модулях только работает... То что попадет в пути под % передается в функцию в качестве параметра и выведит страницу с резюме для каждого пользователя. Причем и модуль и функцию надо писать самому.

Аватар пользователя direqtor direqtor 25 сентября 2008 в 12:52

В реализации hook_menu модуля user это место выглядит так:

  $items['user/%user_uid_optional'] = array(
    '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 работать.

Аватар пользователя VanDerKeen VanDerKeen 25 сентября 2008 в 22:51

Спасибо. Сделал. Вот основной код модуля:

function profilemenu_menu($may_cache) {
        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');
}
Аватар пользователя direqtor direqtor 26 сентября 2008 в 5:08

Вот не знаю, как будет работать эта строчка...
'access' => ($user->uid),
И потом если модуль называется profilemenu, то все его функции должны начинаться с этого префикса...