根据登录的用户更改Drupal模块中的选项卡名称。

时间:2016-10-06 17:25:21

标签: php drupal drupal-modules

使用基于Drupal构建的Intranet,我得到了一个带有几个标签的模块。

有两种类型的用户,即管理员和非管理员。我喜欢根据查看者的名称更改选项卡的名称。

目前这就是我所得到的:

function lessons_learned_menu(){
...
  $items['lessons-learned/projects/viewAll'] = array(
    'title' => 'View All Projects - LL',
    'description' => 'Review page that lists projects that are currently open.',
    'page callback' => 'pmo_lessons_learned_projects_viewAll',
    'access arguments' => array('Access pmo_lessons_learned'),
    'type' => MENU_LOCAL_TASK
  );
...

访问参数'Access pmo_lessons_learned',每个人都有(包括管理员)和'管理员pmo_lessons_learned'只有管理员才有。

不起作用的东西:

if(!user_access("Administer pmo_lessons_learned")){    
   $items['lessons-learned/projects/viewAll'] = array(
     'title' => 'View All Projects - LL',
     'description' => 'Review page that lists projects that are currently open.',
     'page callback' => 'pmo_lessons_learned_projects_viewAll',
     'access arguments' => array('Access pmo_lessons_learned'),
     'type' => MENU_LOCAL_TASK
   );
}
else
{
    $items['lessons-learned/projects/viewAll'] = array(
      'title' => 'Review Projects',
      ...
}

当我尝试调试它时,我总是将用户设置为Admin(当它是非Admin时),因此每次都进入else条件。

所以如果用户不是Admin,我想更改选项卡的名称,反之亦然。

1 个答案:

答案 0 :(得分:1)

hook_menu被调用一次以构建和缓存菜单项,并且在清除缓存之前不应该再次运行。这个钩子由Drupal用户1(管理员)调用,这解释了为什么true返回'title callback'

但是,您可以使用菜单项定义中的{{1}}配置来生成带有功能的标题。