【发布时间】:2010-10-13 14:56:51
【问题描述】:
我有一个带有分类术语的 Content-Type。这是一个选择列表,所以它只能有一个分类法——至少是那个词汇表。现在我需要构建一个视图,列出所有具有相同分类的节点。
认为这不会太难,因为它听起来很基本。但是我无法让它工作。有任何想法吗?我试图避免为此编写模块。
【问题讨论】:
标签: drupal views drupal-views taxonomy drupal-taxonomy
我有一个带有分类术语的 Content-Type。这是一个选择列表,所以它只能有一个分类法——至少是那个词汇表。现在我需要构建一个视图,列出所有具有相同分类的节点。
认为这不会太难,因为它听起来很基本。但是我无法让它工作。有任何想法吗?我试图避免为此编写模块。
【问题讨论】:
标签: drupal views drupal-views taxonomy drupal-taxonomy
虽然如其他一些答案中所述,Views 2 在技术上是可行的,但 Views 3 已内置此集成。
您可以为分类术语 id 创建一个参数,然后选择“提供默认参数”。这将为您提供“来自 URL 的分类术语 ID” 和 “从节点页面加载默认参数...”的选项
这将允许您获取页面的分类并将其作为参数传递给您的视图块。
注意:Views 3 目前处于 Alpha 3 阶段,但根据我的经验,它处于相对稳定的状态,我正在生产站点上使用它。如果它具有您认为有用的上述功能,请使用它,测试它并在遇到任何问题时提交错误/补丁!
【讨论】:
此答案适用于 Views 版本 2 或更高版本。首先你需要安装 Views attach (http://drupal.org/project/views_attach)。在继续之前,请阅读附加视图。观看附件最好通过此视频进行解释 http://mustardseedmedia.com/podcast/episode37
现在我们进入视图附加。请在继续之前启用视图附加模块。本质上Views attach 在节点末尾附加了一个视图。在我们的例子中,我们的视图将是具有相同术语的其他文章的列表。
我们基本上需要将节点的分类术语“传递”给视图。将您的词汇名称命名为MyVocab。
制作视图的步骤。
display_other_articles_with_same_taxonomy。 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] 这是“顶级分类术语的ID”。这个非常重要!!本质上,您将从MyVocab 传递节点的分类术语(请参阅http://groups.drupal.org/node/11788#comment-38332)。如果它的权重最低,那么分类词汇将是节点编辑表单分类部分中的第一个词汇。添加参数Taxonomy: Term Id。
添加您感兴趣的字段,例如Node: Title。勾选Link this field to its Node,确保Node: Title 成为超链接
所以这个视图要做的是:
MyVocab 词汇表中获取分类术语display_other_articles_with_same_taxonomy
就是这样!
如果您正在使用 Views 3(在撰写本文时当前处于 alpha3)并且您想要一个块(现在文章具有相同的分类术语出现在节点正文的末尾)您可以通过以下方式进行:
Node Content 显示说明相同的参数、字段和过滤器。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 词汇表。 注意:此答案是我在How to just show NodeQueue block on included nodes? 提供的答案的子集。在这种情况下,要求是明确选择相关文章并按特定顺序列出。它有点复杂,并且使用了我们在这里根本不需要的节点队列。
【讨论】:
使用关系
【讨论】:
视图为您提供添加过滤器的选项。单击视图管理 UI 的过滤器区域中的加号,从列表中选择分类,选中术语或 ID,然后填写您需要过滤的值。
编辑(用于明确说明):
首先,在要从您尝试过滤的节点(例如节点标题等)显示的字段部分下添加所需的字段。
在参数下,单击加号并选择分类
检查分类:术语并单击添加
点击更新
在您的预览区域中,通过添加参数并单击预览来测试它。如果它不起作用,您的节点没有附加分类,您的视图模块已损坏,或者您没有按照指示进行操作。
【讨论】: