2010-10-13 110 views
2

我有一个含分类条款的内容类型。这是一个选择列表,所以它只能有一个分类 - 至少是那个词汇。现在我需要构建一个列出具有相同分类标准的所有节点的视图。Drupal Views:获取与当前节点具有相同分类的节点

认为这不会太难,因为它听起来很基本。但我无法得到它的工作。有任何想法吗?我试图避免为此写一个模块。

回答

4

此答案适用于Views 2或更高版本。首先你需要安装视图附加(http://drupal.org/project/views_attach)。请在继续阅读之前阅读有关Views的附加信息。视图附加是最好的解释通过这个视频http://mustardseedmedia.com/podcast/episode37

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

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

制作视图的步骤。

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

进行如下设置在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]这是“顶级分类术语的标识”。这个非常重要!!基本上,您将要通过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. 采取分类项
  3. 将该参数作为参数传递给视图display_other_articles_with_same_taxonomy
  4. 列出与显示的节点具有相同分类术语的所有节点。

那就是它!

如果您使用浏览3(目前在素α3写作的时候)你想有一个块(现在的文章具有相同的分类项来在节点的主体的末尾),你可以做到这一点在用以下方式:

  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. 请确保您命名该块并将其放入适当的区域。

注:这个答案是我在How to just show NodeQueue block on included nodes?提供在该方案的要求是,相关的文章了明确选择,并按照特定的顺序列出的答案的子集。它稍微复杂一点,使用我们根本不需要的Nodequeue。

1

视图为您提供了添加过滤器的选项。单击视图admin UI的过滤器区域中的加号,从列表中选择Taxonomy,检查Term或ID,然后填写您需要过滤的值。

Edit(对于明确指示):

  1. 首先,添加要根据你想从你试图过滤,如结题的节点显示的字段部分必要的字段,等

  2. 在参数,单击加号,然后选择分类

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

  4. 单击更新

在预览区中加入参数,并点击预览测试它。如果它不起作用,那么您的节点没有附加的分类,视图模块已损坏,或者您没有遵循指示。

+0

嗯,我不想为每个学期构建一个块。我想到在某处使用参数。 – 2010-10-13 15:07:54

+0

然后添加一个参数 - 视图可以让你做到这一点。只要按照相同的程序。你不需要建立一个块 - 它可以放在一个页面或任何其他地方。 – 2010-10-13 15:10:00

+0

显然,我尝试过,但我无法得到它的工作。我也尝试过使用关系......你能给出一些更详细的解释吗? – 2010-10-13 15:17:38

2

使用关系

  1. 节点1 - >关系1 - >期限//这将是relationships-> taxonomy->项
  2. 期限 - >相关2 - >节点2 //这将是relationships->节点 - >节点
  3. 参数NID到过滤器节点1
  4. 上关系2字段或节点全视图(你将看到字段添加表格上选择框,以确定的使用什么NODE)
+0

非常简单。 – Evans 2011-03-25 10:25:49

+1

这看起来可能是最好的解决方案,但它非常简洁,我无法遵循它。多一点细节将会有所帮助。 – 2011-09-26 19:41:16

10

尽管这在技术上是可能的,如一些其他的答案中描述的意见2,查看3具有这种整合内置的。

您可以创建的分类项ID参数,然后选择“提供默认参数“。那么这会给你“从网址分类期限ID”和选项“从节点页面加载默认参数......”

这将允许你把一个页面的分类和传递为您的视图块的一个参数。

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

+0

-1:视图3未处于稳定版本。 Drupal模块有一个很稳定的趋势,即使在测试阶段。这不是为了诋毁视图团队所做的任何事情,但总体而言,使用稳定软件只是最佳做法。 – 2010-10-14 12:08:36

+1

尽管您认为Views 3尚未移至最终版本,但视图3被列为“支持”。 Drupal模块经过测试并从开发通道,到alpha版,到beta版,到正式发布版的方式是让社区使用它们,测试它们,并报告它们可能遇到的任何问题。只要通过选择视图3而不是视图2(视图项目页面做得相当好)来清楚你所得到/放弃的内容,我并不认为我的答案对这个问题的回答没有那么有效。 – markdorison 2010-10-14 20:51:41

+0

+1赞同@markdorison – 2010-10-15 14:54:09

-1

只有一两件事:

构建模式:预告,全部节点

更好试试这个:

构建模式:全节点

仿佛添加传情在这里,我认为它会获得每个挑逗项目条款的帖子,我以这种方式解决了内存错误。但是当我从这里删除Teaser时,它可以正常工作。

相关问题