Drupal 7 如何避免用户路径中出现Drupal 7用户ID?
我的主题如下:Drupal 7 如何避免用户路径中出现Drupal 7用户ID?,drupal-7,hook-menu,Drupal 7,Hook Menu,我的主题如下: $items['user/%user/sms-services'] = array( 'title' => t('SMS Services'), 'page callback' => 'sms_user_page', 'page arguments' => array(1), 'access callback' => 'user_is_logged_in', 'type' => MENU_LOCAL_TASK,
$items['user/%user/sms-services'] = array(
'title' => t('SMS Services'),
'page callback' => 'sms_user_page',
'page arguments' => array(1),
'access callback' => 'user_is_logged_in',
'type' => MENU_LOCAL_TASK,
);
它非常有效,因为它:
/user/sms-services
和/user/user\u ID/sms服务必须重定向到/user/sms服务
和/user/user\u ID必须重定向到/user
有没有一个简单的方法可以做到这一点
更新
我使用“我的别名”模块完成了大部分工作,但它仍然不是一个非常优雅的解决方案,因为现在我只能使用两个URL:
/user/me/some-action
及
当我真正想要的是:
/user/some-action
有人有什么想法吗?也许你可以这样做。检查输入用户/sms服务的用户是否通过使用用户登录登录,如果为真,请使用全局$user获取更多信息。 也许是这样的
$items['user/sms-services'] = array(
'title' => 'SMS Services',
'page callback' => 'sms_user_page',
'access callback' => 'user_is_logged_in',
'type' => MENU_LOCAL_TASK,
);
function sms_user_page(){
if(user_is_logged_in){//Just realize, with 'access callback' => 'user_is_logged_in' in the menu item array this if is unnecesary
global $user;
$user->uid;
//Do stuff
}
}
还可以从旧的drupal_goto()中创建一个新的drupal_goto()(带有用户通配符的菜单项)
非常重要:
不要在菜单项中使用t()函数。通过defualt,drupal将标题字符串传递到函数t()。您可以通过在菜单项数组中设置新的“标题回调”来更改该行为
请参见drupal.org上的hook_菜单事实上,全局用户可以在任何地方恢复,您可以避免通过URL传递它。如果我是你,我会试试吉安尼的解决方案。
$items['user/sms-services'] = array(
'title' => 'SMS Services',
'page callback' => 'sms_user_page',
'access callback' => 'user_is_logged_in',
'type' => MENU_LOCAL_TASK,
);
function sms_user_page(){
if(user_is_logged_in){//Just realize, with 'access callback' => 'user_is_logged_in' in the menu item array this if is unnecesary
global $user;
$user->uid;
//Do stuff
}
}