将两个视图合并为一个视图

时间:2010-04-05 15:42:24

标签: drupal drupal-6 views

我有两个观点,我想合并为一个。

第一个视图显示公司ID = Y的X的所有项目。这是先为客户提供优先排序,然后是其他所有人。

所以我创建了第二个视图,X的所有项目,公司ID!= Y。

我将它创建为附件以附加到第一个视图,但我认为我没有得到预期的结果。

如何组合这些视图以便首先列出第一个视图结果,然后使用相同的寻呼机,过滤器和参数来列出第二个视图?

有没有办法在没有编程的情况下实现这个目标?

7 个答案:

答案 0 :(得分:2)

从MySQL的角度来看,逐字段语法是处理此问题的合适方法。例如:

SELECT * FROM tickets ORDER BY FIELD(priority, 'High', 'Normal', 'Low');

如果有一个模块可以为Views添加这种功能,那将会很棒,但是AFAIK,它不存在。

如果你想在没有编程的情况下解决这个问题,我认为你可以使用规则模块在公司ID = Y的节点上自动设置'sticky'复选框。有了这个,你可以在粘滞值上订购View

答案 1 :(得分:1)

按照“粘性”的想法,如果你不想覆盖它,也许你可以在公司类型中添加一个复选框字段 - isClient。对除了客户端以外的所有人都做错,并按此排序。

我还没有这样做,但是你可能需要创建两个版本作为附件,并将它们都附加到另一个显示器上......?

答案 2 :(得分:0)

对于drupal 5,有观点联盟。有人为D6开了一些东西,但我不知道他们走了多远。

http://drupal.org/node/275162

答案 3 :(得分:0)

将第二个视图创建为附件并将其附加到第一个视图 将所有Inherit argumentsInherit exposed filtersInherit pager设置为Yes

答案 4 :(得分:0)

客户端参数如何传递给视图?作为网址参数?如果是这样,您可以创建第二个视图,例如我勾画here,然后在相应的位置选择排除参数选项。

答案 5 :(得分:0)

通常最简单的方法是使用一个小的hook_query_alter,但这需要少量的编程。

答案 6 :(得分:0)

稍后......但我找到了一个更好的解决方案仅使用视图模块

  1. 创建一个阻止视图,其中显示了您需要的第一个列表(“all items of X where company ID = Y”)
  2. 使用第二个列表(all items of X, where company ID != Y)创建另一个必须为“网页视图”的视图
  3. 在第二个视图的“HEADER”设置中,点击“Add”并选择“Global: View area”。
  4. 在“View to insert”列表中,选择您创建的第一个(如果您正在使用,请选中“Inherid contextual filters”)
  5. 就是这样!