2012-07-12 44 views
1

我创建了一个自定义事件的内容类型在Drupal 7与教师和学生用户领域。我想创建一个视图,其中的内容只显示给那些内容中的教师或学生的用户 - 一个自定义日历。Drupal 7的过滤器字段当前用户

到目前为止,我试图在内容创建一个过滤器:教师(field_teacher),使用用户:UID用户。我知道这是一个语法问题,但我需要的值是当前登录用户

回答

0

它实际上是一个非常简单的解决方案 - 我的两个实体引用(学生和老师)创建上下文过滤器,然后在节中,我补充说:“使用当前登录的用户”,“如果没有默认提供的”。

然后我不得不写一个自定义模块与hook_query_alter改变上下文过滤器的与一个或

0

要获取当前登录的用户uid,请按照此代码段。

global $user; 
$uid = $user->uid; 

希望这项工程...穆罕默德。

+0

我想创建一个过滤器,现场的学生= currentUser或现场老师= currentUser。 – 2012-07-12 08:54:32

+0

你想显示用户发布自己的内容吗?! – 2012-07-12 08:56:51

+0

不一定 - 这就是为什么我不能使用作者标签。例如,如果教师创建内容,我仍然希望教师和学生能够看到它。 – 2012-07-12 09:27:54

0

尝试添加一个关系到该字段内容:教师(field_teacher)首先,然后再次检查过滤器选项以查看您需要的那个现在是否可用。

+0

你的意思是在内容类型或视图中添加关系?我不确定我需要什么过滤器!我补充说:“实体引用:引用的实体”的关系,无论是学生和教师,但我不知道这是应该什么样的影响有 - 它并没有改变什么过滤。 – 2012-07-12 14:48:03

+0

@TrevorNewhook我的意思是在视图中添加关系。它不会更改被过滤的内容,但是一旦添加了关系,您应该获得更多的过滤器选项。 – nmc 2012-07-12 14:53:45

0

为什么不只是创建两个不同的显示屏,并使用访问视图选项根据用户的角色过滤?

把这一建议旁白:你不应该使用两个字段一名教师,为您的内容类型学生之间的区别来。使用单个字段选择列表。作为一个例子,对于学生来说,价值将是0,对于教师来说是1。

然后添加字段作为语境筛选,选择提供默认值和使用PHP代码作为类型。使用下面的代码来确定用户的角色,并返回相应的值:

global $user; 

if(in_array('student', array_values($user->roles))) { 
    return 0; 
} else { 
    return 1; 
} 

我会建议,虽然我的第一个建议,并利用基于角色的访问。

相关问题