Drupal 7过滤现场用户

时间:2012-07-12 06:15:23

标签: drupal drupal-7 drupal-views

我在Drupal 7中创建了一个自定义事件内容类型,其中包含教师和学生的用户字段。我想创建一个视图,其中仅针对该内容中的教师或学生的用户显示内容 - 自定义日历。

到目前为止,我已尝试使用 user:uid user 内容:教师(field_teacher)上创建过滤器。我知道这是一个语法问题,但我需要将值设为 CurrentlyLoggedinUser

4 个答案:

答案 0 :(得分:1)

要获取当前登录的用户uid,请按照以下代码段进行操作。

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

希望这有效......穆罕默德。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

将该建议放在一边:您不应该使用两个字段来区分教师和学生的内容类型。使用单个字段选择列表。作为一个例子,学生的值为0,教师的值为1。

然后将该字段添加为上下文过滤器,选择提供默认值并使用 PHP代码作为类型。使用以下代码确定用户的角色并返回适当的值:

global $user;

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

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

答案 3 :(得分:0)

这实际上是一个非常简单的解决方案 - 我在两个实体引用(学生和教师)上创建了上下文过滤器,然后在“如果没有提供默认值”部分中,我添加了“使用当前登录的用户”。

然后,我必须编写一个带有hook_query_alter的自定义模块,以将上下文过滤器的AND更改为OR