【问题标题】:Drupal 7 - Using Views Relationships With FiltersDrupal 7 - 使用带有过滤器的视图关系
【发布时间】:2012-06-17 01:19:33
【问题描述】:

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

我尝试添加“内容:作者”关系并点击应用。我不完全确定为什么,但直到此时我才能回到关系并查看更多选项,例如:“用户:内容创作”(然后必须依赖于第一个关系?)所以我也选择了那个并像这样设置它: 现在我可以转到暴露的过滤器并选择关系:

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

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

SQLSTATE[42S22]:找不到列:1054 'on 子句'中的未知列 'field_data_field_hidden_​​name.uid'

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

【问题讨论】:

  • 问题在于,在关系“用户:创作的内容”中,您刚刚在视图中添加了有关用户创作的内容的信息,但无处选择“此特定内容的内容”类型”。因此,这并不是真正将您的用户限制为特定类型的作者,而只是将他们限制为在您应用该关系时已创作任何内容的用户。

标签: drupal drupal-7 views drupal-views


【解决方案1】:

有一些 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.

【讨论】:

    【解决方案2】:

    Linked theme 中有关于视图选择性过滤器的答案(又名“视图选择性暴露过滤器”,又名views_filters_selective,又名views_selective_filters)。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多