在Drupal Views中为特定用户设置可见性规则

时间:2012-12-02 22:22:20

标签: php drupal permissions drupal-views

我在Durpal中设置了一个管理面板页面,可以提取三个视图。将显示的视图取决于登录的管理员,因此三个管理员中的每个管理员只能看到适用于他们的视图。我已将以下可见性规则添加到所有三个视图(使用相应的uid)。

global $user;
if ($user->uid == 8090){
  return TRUE;
} else {
  return FALSE;
}

有效。现在,我想更改此设置,以便管理员的同事也可以看到它。我试过这个:

global $user;
if ($user->uid == 8090 || 4090){
  return TRUE;
} else {
  return FALSE;
}

员工现在可以正确地看到它,但是,现在管理员除了他们之外还看到了其他视图,我们不希望如此。我是php的初学者,这是我第一次尝试它。帮助

我不知道上面的描述是否足够清楚。基本上我想要这个:

查看1:管理员A可见 视图2:管理员B可见 视图3:管理员可见C

成为这个:

查看1:管理员A和员工A可见 视图2:管理员B和员工B可见 视图3:管理员C和关联C可见

谢谢!

1 个答案:

答案 0 :(得分:0)

您必须创建三个单独的管理员角色,并使用此代码检查条件以打印视图

全球$ user;
if(in_array(“Admin1”,array_values($ user-> roles)))
{
$ view = views_get_view('VIEWNAME');
if($ view-> access('default')){
  print $ view-> preview('default');
}
}
else if(in_array(“Admin2”,array_values($ user-> roles)))
{

$ view = views_get_view('VIEWNAME');
if($ view-> access('default')){
  print $ view-> preview('default');
}

}
否则
{

$ view = views_get_view('VIEWNAME');
if($ view-> access('default')){
  print $ view-> preview('default');
}

}

将此代码粘贴到page.tpl.php中(或在相关页面中使用它)并将Access设置为每个视图。

我希望至少你能从中得到这个想法。