Drupal 7 - 使用带有过滤器的视图关系

问题描述 投票:0回答:2

在视图中,我有一个公开的过滤器,用于查看 UID(用户 ID/作者),但是 有没有办法将其限制为“仅”在此内容类型中发布的用户?

我尝试添加“内容:作者”关系并点击“应用”。我不太清楚为什么,但直到此时我才能返回到关系并看到更多选项,例如:“用户:创作内容”(这必须依赖于第一个关系?)我也选择了那个并设置如下: Relationship step 1 现在我可以转到公开的过滤器并选择关系:

Relationship step 2 但这不起作用——暴露的过滤器继续显示所有注册用户。

我还尝试放入“用户参考”字段(到此内容类型)并将其附加到关系,但它不允许显示任何内容并给出此 SQL 警告:

SQLSTATE[42S22]:未找到列:1054“on 子句”中的未知列“field_data_field_hidden_name.uid”

如何将此作者公开的过滤器限制为“仅”在此内容类型中发帖的用户?

drupal drupal-7 view drupal-views
2个回答
0
投票

有一些 drupal 模块可以帮助您。如对应节点引用

但是,如果您擅长 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.

0
投票

链接主题中有关于视图选择性过滤器的答案(又名“视图选择性公开过滤器”,又名views_filters_selective,又名views_selective_filters)。

此模块添加名称中带有后缀“(选择性)”的过滤器 - 添加您需要的过滤器,而不是不带后缀的过滤器。

© www.soinside.com 2019 - 2024. All rights reserved.