如何在用户路径中避免Drupal 7用户ID?

时间:2015-01-11 08:13:28

标签: 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,
); 

它很有效:

  1. 创建网址/用户/ USER_ID / sms-services
  2. 在/ user页面上创建一个标签
  3. 但是,我想摆脱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
    

    有人有任何想法吗?

1 个答案:

答案 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