任何人都能告诉/指导我设置Drupal的最简单方法,以便用户只能看到管理员认为可见的页面吗?例如,我需要user1和user2,每个都有一个特定于他们的登陆页面,而另一个则无法看到。
我花了6到7个小时才成功,这太疯狂了!我尝试过v6和v7,角色权限,节点权限,分类访问控制等等。无论我做什么,都没有阻止user1看到主页2。我认为这在Drupal中非常基础。
提前感谢您的任何帮助。
答案 0 :(得分:0)
有几种方法可以做到这一点......
使用有机组并将每个用户分配到不同的组,然后使每个页面仅由特定组访问
使用主页面板并设置每个面板的访问权限,以指定哪些用户角色可以查看该页面(每个用户都需要分配一个角色)
通过template.php中的函数检查用户的角色(http://www.grasmash.com/node/41可能会帮助您入门)或者在page.tpl.php(http://www.bywombats.com/blog/ryan/10-25-2007/checking-if-drupal-user-has-role#comment-948)中使用PHP
尝试使用内容访问模块 - drupal.org/project/content_access。我发现它可以很好地限制或共享每个用户或每个角色的内容
答案 1 :(得分:0)
我设法始终使用Content Access模块来执行您的要求。
您也可以在页面代码中尝试它,方法是将其包含在限制谁可以看到该代码的代码段中,例如;
<?php
global $user;
if($user->roles[3] || $user->roles[4]){
//only for admins or moderators
}
if($user->roles[0] || $user->roles[1] || $user->roles[DRUPAL_ANONYMOUS_RID] || user_is_anonymous()){
//everyone else
}
?>
您还可以按用户ID定位允许的部分,但您需要先知道相关ID,例如管理员将$user->uid[1]
关于成员资格的长度,您可以通过访问用户表中应该返回unix时间戳的创建值来获取创建用户的日期。
$usercreated=$user->created;
要将此转换为更易读的日期,您可以使用PHP
的{{1}}功能;
strftime()
要计算用户注册的天数,您可以尝试:
$usercreated=date('d M, Y',strftime($user->created));
有关所有可用用户挂钩的列表,请查看http://api.drupal.org/api/drupal/developer--globals.php/global/user/6