1

我正在为一个从使用两个节点引用字段的节点获取数据的视图而苦苦挣扎,该节点指向相同类型的内容。从我的路径中,我得到一个字符串作为参数,我们称之为$fruit.

如果我自己编写查询,我将进行的查询将类似于SELECT * FROM recipe WHERE (fruit_1=$fruit OR fruit_2=$fruit). 我的问题是我不知道如何在 Drupal 视图中执行此操作。有什么建议么?

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

4

2 回答 2

2

视图或模块插件:http ://drupal.org/project/views_or

它真的应该默认包含在 Views 中,因为它非常强大。

'begin alternatives' 选项本质上是在您的查询中放置一个 '('。'next Alternative' 选项本质上是在您的查询中放置 'OR'。'end Alternatives' 选项本质上是在您的查询中放置一个 ')'。

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

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

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

于 2009-12-09T17:26:57.850 回答
1

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

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

于 2009-12-09T14:42:27.113 回答