当一个CT引用另一个CT时,如何在视图中消除重复的Drupal节点?

时间:2012-11-28 02:55:37

标签: drupal-7 drupal-views entityreference

Drupal 7及相关模块:Views&实体参考

我有一个视图,只显示两个不同内容类型记录的“预告片”显示类型,我们会说它们是文章和页面。

我的文章CT显示了一些简单的字段。

My Page CT有几个字段,但也有实体参考字段(无限制条目)。实体引用字段指向其他文章节点。

然后,正如预期的那样,我的视图显示每个记录的预告片显示,当然当页面记录引用另一个文章记录时,该文章的预告片将显示为页面预告片的一部分。

这很棒。问题是,我不想显示重复的文章预告片。这意味着,如果一个页面引用了一篇文章,我不希望将该文章预告片显示为单个列表。

想想这样,我有这些文章:

  1. 第1条
  2. 第2条
  3. 第3条
  4. 我有这些页面:

    1. Page 4
    2. Page 5
    3. Page 6
    4. 第4页 - >第1条和第2条

      第6页 - >第2条

      TL; DR

      现在视图会显示如下内容:

      • 第1条
      • 第2条
      • 第4页
        • 第1条
        • 第2条
      • Page 5
      • 第6页
        • 第2条
      • 第3条

      我想要的是:

      • 第4页
        • 第1条
        • 第2条
      • Page 5
      • 第6页
        • 第2条
      • 第3条

      编辑:这是我正在尝试做的快速图表。顺便说一句,这是使用“内容”而不是“字段”,因为在两个CT的视图中存在不相等的字段。

      Diagram

3 个答案:

答案 0 :(得分:2)

问题在于,从数据库角度来看,实际上 记录是不同的,因为存在由不同实体引用生成的多个记录。

Drupal 8的核心问题是Views relationships with multi-valued entity reference fields invalidate Distinct query option。那里应该有可用的补丁。

对于Drupal 7,将Views Distinct模块用作it probably won't be fixed in Views

答案 1 :(得分:1)

我最终通过使用对应的实体参考模块(CER)来解决这个问题。这将创建一个在父< - >子项之间同步的双向关系。使用它,我可以简单地过滤所有具有父视图的子项。

答案 2 :(得分:0)

Advanced部分下的视图页面。点击Other - > Query settings: Settings。然后选中Distinct复选框。

希望这有帮助......穆罕默德。