user-> uid对于任何用户来说都是1?

时间:2012-05-07 15:05:38

标签: drupal drupal-7 drupal-routes

我是Drupal的新手,所以我想创建一个自定义用户配置文件的简单模块,特别是我想为用户配置文件插入一些选项卡(传统的用户配置文件有2个选项卡“View tab”和“Edit Tab”)所以现在我想添加更多3个标签。

  • 显示历史
  • 分享个人资料
  • 快捷方式

但它仅适用于用户身份验证而非管理员个人资料(当管理员显示他的个人资料时,该个人资料是传统个人资料)。 所以它是我的代码(我的模块名称是:tung_tab),这里是tung_tab.module的代码:

function tung_tab_menu() 
{
    $items = array();
    global $user;
        //if (!user_access('administer'))
        if($user->uid!=1)
     {
      $items['user/%/rvhistory'] = array(
        'title' => 'Review History ',
        'description' => 'Review History',
        //'page callback' => 'drupal_get_form',
        //'page arguments' => array('tung_tab_confirm_reviewh', 1),
        'access callback' => 'user_view_access',
        'access arguments' => array(1),
        'type' => MENU_LOCAL_TASK,
      );
      $items['user/%/sharehistory'] = array(
        'title' => 'Share History',
        'description' => 'Share History',
        //'page callback' => 'drupal_get_form',
        //'page arguments' => array('tung_tab_confirm_shareh', 1),
        'access callback' => 'user_view_access',
        'access arguments' => array(1),
        'type' => MENU_LOCAL_TASK,
      );
      $items['user/%/sc'] = array(
        'title' => 'Shortcut',
        'description' => 'Shortcut',
        //'page callback' => 'getDescription',
        //'page arguments' => array('tung_tab_confirm_shareh', 1),
        'access callback' => 'user_view_access',
        'access arguments' => array(1),
        'type' => MENU_LOCAL_TASK,
      );
     }
      return $items;
}

它适用于管理员标签,但是当我退出然后与其他用户登录时 但是没有改变的东西,所以如果我评论// if($ user-> uid)这一行,那么就可以了 所以当我在这一行添加更多代码时 'title'=> 'Review History'。$ user-> uid, 当我是管理员它显示审查历史1 当我进入另一个帐户时,一切都是一样的,回顾历史1 我不明白为什么?我认为我的代码有些错误 我把我的模块放在“mysite / sites / default / modules /”

1 个答案:

答案 0 :(得分:2)

您不应在 if condition 中定义菜单项。您应该使用访问回调和访问参数来控制对菜单回调的访问。

<强> WRONG:

function tung_tab_menu() 
{
    $items = array();
    global $user;
    if($user->uid!=1)
    {
        // defined menu items
    }
    return $items;
}

<强>正确:

function tung_tab_menu() 
{
    $items = array();
    global $user;
    // define the menu items here...
    return $items;
}

尝试修复它,然后看看你是否仍然得到相同的结果。