Drupal-Content按用户名显示

时间:2011-10-11 14:47:57

标签: drupal

任何人都能告诉/指导我设置Drupal的最简单方法,以便用户只能看到管理员认为可见的页面吗?例如,我需要user1和user2,每个都有一个特定于他们的登陆页面,而另一个则无法看到。

我花了6到7个小时才成功,这太疯狂了!我尝试过v6和v7,角色权限,节点权限,分类访问控制等等。无论我做什么,都没有阻止user1看到主页2。我认为这在Drupal中非常基础。

提前感谢您的任何帮助。

2 个答案:

答案 0 :(得分:0)

有几种方法可以做到这一点......

  1. 使用有机组并将每个用户分配到不同的组,然后使每个页面仅由特定组访问

  2. 使用主页面板并设置每个面板的访问权限,以指定哪些用户角色可以查看该页面(每个用户都需要分配一个角色)

  3. 通过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

  4. 尝试使用内容访问模块 - 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