我在 Drupal 7 中创建了一个自定义事件内容类型,其中包含教师和学生的用户字段。我想创建一个视图,其中内容仅针对该内容中的教师或学生用户显示 - 自定义日历。
到目前为止,我已经尝试使用user:uid和user在Content: Teacher (field_teacher)上创建一个过滤器。我知道这是一个语法问题,但我需要该值为currentLoggedinUser
我在 Drupal 7 中创建了一个自定义事件内容类型,其中包含教师和学生的用户字段。我想创建一个视图,其中内容仅针对该内容中的教师或学生用户显示 - 自定义日历。
到目前为止,我已经尝试使用user:uid和user在Content: Teacher (field_teacher)上创建一个过滤器。我知道这是一个语法问题,但我需要该值为currentLoggedinUser
要获取当前登录的用户 uid,请遵循此代码段。
global $user;
$uid = $user->uid;
希望这行得通……穆罕默德。
首先尝试将关系添加到字段内容:教师 (field_teacher),然后再次检查过滤器选项以查看您需要的选项现在是否可用。
为什么不创建两个不同的显示并使用访问视图选项根据用户的角色进行过滤?
把这个建议放在一边:你不应该使用两个字段来区分你的内容类型的老师和学生。使用单个字段选择列表。例如,学生的值为 0,教师的值为 1。
然后将该字段添加为Contextual Filter,选择提供默认值并使用PHP 代码作为类型。使用以下代码来确定用户的角色并返回适当的值:
global $user;
if(in_array('student', array_values($user->roles))) {
return 0;
} else {
return 1;
}
不过,我会推荐我的第一个建议,并使用基于角色的访问权限。
这实际上是一个非常简单的解决方案——我在两个实体引用(学生和教师)上创建了上下文过滤器,然后在“如果没有提供默认值”部分,我添加了“使用当前登录的用户”。
然后我不得不编写一个带有 hook_query_alter 的自定义模块来将上下文过滤器的 AND 更改为 OR