在视图中,我有一个公开的过滤器,用于查看UID(用户ID /作者),但是是否有办法将此限制为“仅限”已发布此内容类型的用户?
我尝试添加“内容:作者”关系并点击“应用”。我不确定为什么,但直到这一点,我才能回到关系并看到更多选项,例如:“用户:内容创作”(这必须依赖于第一个关系?)所以我也选择了那个并将其设置为: 现在我能够进入暴露的过滤器并选择关系:
但这不起作用 - 暴露的过滤器继续显示所有注册用户。
我还尝试将用户引用字段(对于此内容类型)添加到关系中,但它不允许显示任何内容并给出此SQL警告:
SQLSTATE [42S22]:未找到列:1054'on子句'中的未知列'field_data_field_hidden_name.uid'
如何将此作者公开的过滤器限制为“仅”发布此内容类型的用户?
答案 0 :(得分:0)
有一些drupal模块可以帮助你。例如Corresponding node references
但是,如果你熟悉php代码,你可以创建逻辑来查询数据库并返回所需的结果(这将是表的列)。创建一个上下文过滤器,然后选择一个字段(任何字段应该工作,但最好选择任何一种内容类型)。然后编辑它,当滤波器值不可用时 - >提供默认值 - > PHP代码
$nid = arg(1);// current node id
$query = "SELECT <desired_field_column_name> FROM {<field_data_table_name>} c
WHERE c.<column_that_is_same_as_nid> = :nid";
$result = db_query($query, array(':nid' =>$nid));
$id = array();
while ($row = $result->fetch())
{
array_push($id, $row->field_curator_target_id);//put each node id that's referenced in array
}
$separated = implode("+", $id); // separate them by + for AND , for OR
return $separated; //eg.32 + 30 would represent nodes that you want.
答案 1 :(得分:0)
在Linked theme中有关于视图选择性过滤器(又名“视图选择性暴露过滤器”,又名views_filters_selective,又名views_selective_filters)的答案。
此模块添加名称后缀为“(selective)”的过滤器 - 添加一个您需要的过滤器而不是带后缀的过滤器。