Drupal Views:获取与当前节点具有相同分类的节点

时间:2010-10-13 14:56:51

标签: drupal views drupal-views taxonomy drupal-taxonomy

我有一个带有分类条款的内容类型。它是一个选择列表,所以它只能有一个分类 - 至少是那个词汇表。现在我需要构建一个列出具有相同分类的所有节点的视图。

认为这不会太难,因为它听起来很基本。但我无法让它发挥作用。有任何想法吗?我正试图避免为此编写模块。

5 个答案:

答案 0 :(得分:10)

虽然这在其他一些答案中描述的视图2在技术上是可行的,但是视图3内置了这种集成。

您可以为分类术语ID创建参数,然后选择“提供默认参数”。然后,这将为您提供“URL中的分类术语ID”“从节点页面加载默认参数...”的选项

这将允许您获取页面的分类并将其作为参数传递给视图块。

注意:视图3目前处于Alpha 3中,但根据我的经验处于相对稳定的状态,我在生产站点上使用它。如果它具有您认为有用的上述功能,请使用它,测试它并在遇到任何问题时提交错误/补丁!

答案 1 :(得分:4)

此答案适用于View版本2或更高版本。首先,您需要安装Views attach(http://drupal.org/project/views_attach)。在继续进行之前,请阅读有关视图附件。视频附件最好通过此视频http://mustardseedmedia.com/podcast/episode37

解释

现在我们进入Views attach。请在继续之前启用视图附加模块。基本上Views attach在节点的末尾附加一个视图。在我们的案例中,我们的观点将是具有相同术语的其他文章的列表。

我们基本上需要将节点的分类术语“传递”到视图中。让您的词汇表名称为MyVocab

制作视图的步骤。

  1. 让我们调用视图display_other_articles_with_same_taxonomy
  2. 添加Node Content类型的显示(启用视图附加后可用)。这是一个显示,就像块和页面显示一样,但具有将自身附加到节点的特殊能力。
  3. Node Content Display

    中进行以下设置
    Node content settings
    Node types: [select the content types you are interested in seeing the list of nodes with same taxonomy term]
    Build modes: Teaser, Full node
    Arguments: token
    Show title: No
    

    您应该在参数下选择Use tokens from the node the view is attached to。让令牌为[term-id]这是“顶级分类术语ID”。这是非常重要的!!从本质上讲,您将从MyVocab传递节点的分类术语(参见http://groups.drupal.org/node/11788#comment-38332)。如果它具有最低权重,则分类词汇表将是节点编辑表单的分类法部分中的第一个词汇表。添加参数Taxonomy: Term Id

    添加您感兴趣的字段,例如Node: Title。通过勾选Node: Title

    确保Link this field to its Node成为超链接

    那么这个观点将会是:

    1. 从当前正在查看的节点中的MyVocab词汇表中获取分类术语
    2. 将其作为参数传递给视图display_other_articles_with_same_taxonomy
    3. 列出与正在显示的节点具有相同分类术语的所有节点。
    4. 多数民众赞成!

      如果你正在使用意见3(目前在写作时的alpha3)你想要一个块(现在文章有相同的分类术语出现在节点体的末尾)你可以通过以下方式实现:

      1. 忘记视图附加......不是必需的
      2. 添加块视图。它应包含与Node Content显示的上述说明相同的参数,字段和过滤器。
      3. 您需要稍微修改参数Taxononomy: Term Id的设置:在Action to take if argument is not present:下选择[x] Provide Default Argument。选择[x] Taxonomy Term ID from URL。现在确保取消选中[] Load default argument from term page[x] Load default argument from node page, thats good for related taxonomy blocks. [x]Limit terms by vocabulary并选择Series词汇表。
      4. 确保将块命名并将其放在适当的区域。
      5. 注意:此答案是我在How to just show NodeQueue block on included nodes?提供的答案的子集。在该方案中,要求是明确选择相关文章并按特定顺序列出。它有点复杂,使用Nodequeues,我们根本不需要它。

答案 2 :(得分:2)

使用关系

  1. 节点1 - >关系1 - >术语//这将是关系 - >分类 - >术语
  2. 术语 - >关系2 - >节点2 //这将是关系 - >节点 - >节点
  3. 过滤NODE 1的参数NID
  4. 关系2上的字段或节点完整视图(您将在字段添加表单上看到选择框,以确定要使用的节点)

答案 3 :(得分:1)

视图为您提供了添加过滤器的选项。单击视图管理界面的过滤器区域中的加号,从列表中选择分类,选中术语或ID,然后填写需要过滤的值。

编辑(明确说明):

  1. 首先,在您要尝试过滤的节点(如节点标题等)中的字段部分下添加所需的字段。

  2. 在“参数”下,单击加号并选择“分类法”

  3. 检查分类:术语,然后单击添加

  4. 点击更新

  5. 在预览区域中,通过添加参数并单击预览来测试它。如果它不起作用,您的节点没有附加的分类,您的视图模块已损坏,或者您没有按照说明进行操作。

答案 4 :(得分:-1)

一件事:

构建模式:预告片,完整节点

最好试试这个:

构建模式:完整节点

好像要在这里添加预告片,我认为它会获得每个预告片条款的帖子,我这样就会出现内存错误。但是当我从这里删除Teaser时,它可以正常工作。