我的主题中有以下内容:
$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 ID部分。即该链接必须如下:
/user/sms-services
/ user / USER_ID / sms-services必须重定向到/ user / sms-services
/ user / USER_ID必须重定向到/ user
有一种简单的方法吗?
更新
我使用“me aliases”模块完成了很多这方面的工作,但它仍然不是一个非常优雅的解决方案,因为现在我仍然坚持使用两个网址:
/user/me/some-action
和
/users/393/some-action
当我真正想要的是:
/user/some-action
有人有任何想法吗?
答案 0 :(得分:1)
也许你可以做这样的事情。使用user_is_logged_in检查输入user / sms-services的用户是否为logedin,如果为true,则使用global $ 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()
非常重要:
不要在菜单项中使用t()函数。通过defualt drupal将标题字符串传递给函数t()。您可以通过在菜单项数组中设置新的“标题回调”来更改该行为
请参阅drupal.org的hook_menu