HTML 获取词汇表的分类术语

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HTML 获取词汇表的分类术语相关的知识,希望对你有一定的参考价值。

<?php if (count($taxonomy)): ?>
<?php 
$terms = taxonomy_node_get_terms_by_vocabulary($node->nid, 1);
foreach ($terms as $term) {
  $tags[] = l($term->name, taxonomy_term_path($term));
	}
if ($tags){
 print t("Professional Areas") . ": " . implode(' | ', $tags);
} ?>
<br />
<?php
$terms = taxonomy_node_get_terms_by_vocabulary($node->nid, 2);
foreach ($terms as $term) {
  $tagsTwo[] = l($term->name, taxonomy_term_path($term));
	}
	if ($tagsTwo){
 print t("Focus Areas") . ": " . implode(' | ', $tagsTwo);
}?>
<?php endif; ?>

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

【中文标题】Drupal Views:获取与当前节点具有相同分类的节点【英文标题】:Drupal Views: Get nodes with the same taxonomy as the current node 【发布时间】:2010-10-13 14:56:51 【问题描述】:

我有一个带有分类术语的 Content-Type。这是一个选择列表,所以它只能有一个分类法——至少是那个词汇表。现在我需要构建一个视图,列出所有具有相同分类的节点。

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

【问题讨论】:

【参考方案1】:

虽然如其他一些答案中所述,Views 2 在技术上是可行的,但 Views 3 已内置此集成。

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

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

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

【讨论】:

-1:视图 3 不是稳定版本。 Drupal 模块在稳定之前往往会出现很多错误,即使是在测试版中也是如此。这并不是要诋毁视图团队所做的任何事情,但总的来说,使用稳定的软件只是最佳实践。 虽然您认为 Views 3 尚未移至最终版本是正确的,但 Views 3 被列为“受支持”。 Drupal 模块得到测试和从开发通道转移到 alpha 到 beta 再到正式版本的方式是让社区使用它们,测试它们,并报告它们可能遇到的任何问题。只要通过选择 Views 3 而不是 Views 2,Views 项目页面做得很好,我不认为我的回答对问题的回答没有那么有效。 【参考方案2】:

此答案适用于 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? 提供的答案的子集。在这种情况下,要求是明确选择相关文章并按特定顺序列出。它有点复杂,并且使用了我们在这里根本不需要的节点队列。

【讨论】:

【参考方案3】:

使用关系

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

【讨论】:

这看起来可能是最好的解决方案,但它太简洁了,我无法遵循它。更多细节会有所帮助。【参考方案4】:

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

编辑(用于明确说明):

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

    在参数下,单击加号并选择分类

    检查分类:术语并单击添加

    点击更新

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

【讨论】:

好吧,我不想为我拥有的每个术语构建一个块。我想过在某处使用参数。 然后添加一个参数 - 视图也可以让您这样做。只需遵循相同的程序。而且您不必构建块 - 它可以放入页面或其他任何内容中。 很明显我试过了,但我不能让它工作。我也尝试过使用关系……你能给出更详细的解释吗?

以上是关于HTML 获取词汇表的分类术语的主要内容,如果未能解决你的问题,请参考以下文章

Drupal 7 在视图中获取分类术语列表

HTML 在词汇表中打印分类术语

打印词汇表中的分类术语

分类法:***术语视图?

Drupal 7 - 显示图像代替分类术语

Drupal Views - 按多个分类术语过滤