【问题标题】:How to limit Drupal View results by relationship如何按关系限制 Drupal View 结果
【发布时间】:2011-01-17 15:36:02
【问题描述】:

我在以下关系中预定义了一组与 Drupal 杂志相关的内容类型:

  • 故事:有标题、正文、作者、对问题的必需节点引用、对插图的可选节点引用。
  • 文章:具有标题、正文和对问题的必需节点引用。
  • 插图:有图片和贡献者个人资料。
  • 问题:有标题和日期。
  • 贡献者个人资料:有名字和姓氏。

我想要得到的是一份问题清单,其中包含一个故事中的插图,如果有的话。如果没有故事(可能只有文章),或者没有任何带有插图的故事,我只想列出问题的标题。

所以我正在寻找如下输出:

[StoryImage] 2010 年 12 月
2010 年 11 月
[StoryImage] 2010 年 10 月
[StoryImage] 2010 年 9 月
等等

我现在不关心样式或标记——我可以解决这个问题。

这是我目前无法使用的视图设置:

  • 过滤器:节点类型 = 故事、文章
  • 关系:
    1. 内容:问题
    2. 内容:插图
    3. 内容:贡献者,使用插图关系
  • 字段:
    1. 内容:图片,使用插图关系
    2. 节点:标题,使用问题关系
  • 排序标准:
    1. 发行日期,递减。
    2. 贡献者姓氏,降序排列。

我得到的(正如我所期望的)是每个问题的列表,其次数与该问题中的文章/故事一样多。因此,如果 2010 年 12 月号有 3 个项目,11 月号有 2 个项目,这就是我得到的:

[StoryImage] 2010 年 12 月
2010 年 12 月
2010 年 12 月
2010 年 11 月
2010 年 11 月

我真正想要的只是每个问题的第一个结果。这可能吗?如果是,我错过了什么?

【问题讨论】:

    标签: drupal drupal-6 drupal-views


    【解决方案1】:

    在视图的高级设置中,开启聚合。然后确保您在视图中拥有的第一个字段是您尝试获得不同结果的内容类型的 NID(在您的情况下,我认为这将是问题),以便它首先按该字段分组。您可能还需要在 Node Title 字段上设置 aggregation=MIN。

    我在这里找到了这个信息:http://drupal.org/node/1200536#comment-4957410

    注意:我刚刚注意到您的问题被标记为 Drupal 6,这个解决方案很可能是 Drupal 7 特有的,但这个答案可能对其他人有帮助。

    【讨论】:

      【解决方案2】:

      您是否尝试过“不同”过滤器?我不确定这是否适用于您的日期字段,但每当我获得带有视图的笛卡尔积时,我都会使用它。

      【讨论】:

      • Berkes:不幸的是,我认为这种情况下的“不同”过滤器适用于故事/文章,而不是问题,因为它没有效果。 :-/
      • @melissa:模块可以为其领域提供“独特”。如果一个模块不提供独特的,它将不适用于该字段。在这种情况下,我怀疑除了扩展/破解您想要改进的模块之外还有其他解决方案。
      【解决方案3】:

      只需使用 drupal db api 并编写寻呼机查询。根据我的经验,视图对大多数情况都有效,但并非所有情况。

      【讨论】:

      • 虽然你的回答很对,但远远超出了这个问题。梅丽莎没有问“我是否应该不使用 FOO 的视图”,而是“如何在视图中解决这个问题”。我们不知道她还需要什么。
      • 不幸的是,视图似乎没有办法做到这一点,所以我的最终解决方案需要使用 page_query()。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-16
      • 2019-12-05
      • 2019-06-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多