我创建了一个自定义事件的内容类型在Drupal 7与教师和学生用户领域。我想创建一个视图,其中的内容只显示给那些内容中的教师或学生的用户 - 一个自定义日历。Drupal 7的过滤器字段当前用户
到目前为止,我试图在内容创建一个过滤器:教师(field_teacher),使用用户:UID和用户。我知道这是一个语法问题,但我需要的值是当前登录用户
我创建了一个自定义事件的内容类型在Drupal 7与教师和学生用户领域。我想创建一个视图,其中的内容只显示给那些内容中的教师或学生的用户 - 一个自定义日历。Drupal 7的过滤器字段当前用户
到目前为止,我试图在内容创建一个过滤器:教师(field_teacher),使用用户:UID和用户。我知道这是一个语法问题,但我需要的值是当前登录用户
它实际上是一个非常简单的解决方案 - 我的两个实体引用(学生和老师)创建上下文过滤器,然后在节中,我补充说:“使用当前登录的用户”,“如果没有默认提供的”。
然后我不得不写一个自定义模块与hook_query_alter改变上下文过滤器的与一个或
要获取当前登录的用户uid,请按照此代码段。
global $user;
$uid = $user->uid;
希望这项工程...穆罕默德。
尝试添加一个关系到该字段内容:教师(field_teacher)首先,然后再次检查过滤器选项以查看您需要的那个现在是否可用。
你的意思是在内容类型或视图中添加关系?我不确定我需要什么过滤器!我补充说:“实体引用:引用的实体”的关系,无论是学生和教师,但我不知道这是应该什么样的影响有 - 它并没有改变什么过滤。 – 2012-07-12 14:48:03
@TrevorNewhook我的意思是在视图中添加关系。它不会更改被过滤的内容,但是一旦添加了关系,您应该获得更多的过滤器选项。 – nmc 2012-07-12 14:53:45
为什么不只是创建两个不同的显示屏,并使用访问视图选项根据用户的角色过滤?
把这一建议旁白:你不应该使用两个字段一名教师,为您的内容类型学生之间的区别来。使用单个字段选择列表。作为一个例子,对于学生来说,价值将是0,对于教师来说是1。
然后添加字段作为语境筛选,选择提供默认值和使用PHP代码作为类型。使用下面的代码来确定用户的角色,并返回相应的值:
global $user;
if(in_array('student', array_values($user->roles))) {
return 0;
} else {
return 1;
}
我会建议,虽然我的第一个建议,并利用基于角色的访问。
我想创建一个过滤器,现场的学生= currentUser或现场老师= currentUser。 – 2012-07-12 08:54:32
你想显示用户发布自己的内容吗?! – 2012-07-12 08:56:51
不一定 - 这就是为什么我不能使用作者标签。例如,如果教师创建内容,我仍然希望教师和学生能够看到它。 – 2012-07-12 09:27:54