Drupal Views中的节点关系

时间:2009-12-09 13:27:45

标签: drupal drupal-views drupal-panels

我正在努力使用View从一个使用两个节点引用字段的节点获取数据,该节点指向相同类型的内容。从我的路径我得到一个字符串作为参数,让我们称之为$fruit

如果我自己编写查询,我会做的查询就像SELECT * FROM recipe WHERE (fruit_1=$fruit OR fruit_2=$fruit)。我的问题是我在Drupal View中没有得到如何做到这一点。有什么建议吗?

更新: 我终于解决了我一直想做的事情。我的解决方案是使用PanelsView使用Views Or参数,并使用第一个Panels参数将两个参数值设置为相同。不确定我是否正确解释了我的问题或解决方案,但如果有人需要更详细的解释,请随时提出。

2 个答案:

答案 0 :(得分:2)

观点或模块插件:http://drupal.org/project/views_or

默认情况下它应该包含在View中,因为它非常强大。

'begin alternatives'选项实质上在您的查询中放置了一个'(')。 “下一个替代”选项实质上将“OR”放在查询中。 'end alternatives'选项实质上在查询中放置了一个')'。

视图过滤器在每个字段之间设置为“AND”,这增加了“OR”功能。因此,使用您的示例,您的过滤器将类似于:

Content Type = Recipe
Begin Alternatives
Node Title = fruit_1
Next Alternative
Node Title = fruit_2
End Alternatives

请注意,您可以使用更多“下一个替代”过滤器来使用多个或多个选项,每个过滤器都会在其他过滤器之间放置“或”。如果它仍然令人困惑,请在每次更改后检查视图窗格中的查询预览。

答案 1 :(得分:1)

我认为没有办法在Views UI中执行...或...查询的一部分。但是,您可以创建自己的模块并使用Views UI生成查询的第一部分,然后在模块中使用hook_views_query_alterWHERE (fruit_1=$fruit OR fruit_2=$fruit)附加到查询的末尾。

有关hook_views_query_alter herehere的更多信息。祝你好运。