如何在 Drupal 7 中的节点页面上显示分类内容

Posted

技术标签:

【中文标题】如何在 Drupal 7 中的节点页面上显示分类内容【英文标题】:How to display taxonomy content on node--page in Drupal 7 【发布时间】:2018-03-05 22:28:57 【问题描述】:

我在 Drupal 7 中工作,并尝试渲染地图并根据特定分类中的内容构建列表。例如:

各种位置被创建为单独的节点,并附有信息(标题、位置、电话号码、营业时间等)。 位置节点中的一个字段是一个分类术语:市场。例如,东海岸或西海岸。

目前,此地图存在的唯一位置是分类术语市场模板,该模板会提取有关相应市场中每个位置的所有变量。

我想要做的是通过手动选择市场作为相关字段类型在不同的页面(节点页面)上显示地图。我可以让市场名称出现,但我无法获得有关子位置的任何信息!我该怎么做呢?我尝试过使用视图和块,但地图的模板非常复杂——我的理解(可能是错误的)是我需要访问的变量不能从视图/块系统中“模板化” .

有人知道如何访问页面模板上给定分类的节点信息吗?谢谢!

【问题讨论】:

您可以使用预处理向$variables 添加有关分类的信息 如果我理解正确,您可以使用views。安装,启用它,然后创建一个新的视图页面。并在过滤条件上添加Content: Has taxonomy term。这样您就可以加载节点或获取 nid/s 并加载节点内容。 【参考方案1】:

您的地图目前存在于taxonomy-term--markets,我认为这是分类术语模板级别而不是页面模板级别。默认情况下,分类页面将显示与 tid 术语相关的节点列表。在您的 template.php 文件中添加分类模板预处理 function

function your_theme_preprocess_taxonomy_term(&$variables) 
     $nodes = taxonomy_select_nodes($variables['term']->tid);
     var_dump($nodes);  

$nodes 会给你一个nids 的列表,你可以从他们那里node_load 让你访问节点信息。

如果您知道分类术语tid,则在page--node--page 模板级别上,您可以创建页面预处理功能。所以在你的 your_theme/template.php

function your_theme_preprocess_page(&$variables) 
     //Assuming you know your tid
    $variables['mynodeinfo'] = taxonomy_select_nodes(tid));

并在您的page--node--page 模板上通过

输出
var_dump($nodeinfo);

【讨论】:

以上是关于如何在 Drupal 7 中的节点页面上显示分类内容的主要内容,如果未能解决你的问题,请参考以下文章

Drupal 8 如何制作仅显示与当前节点相关的分类术语的视图

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

drupal 7中的上下文过滤器视图

如何在 Drupal 的主分类页面中显​​示子术语?

drupal 7 - 按分类术语分组

基于词汇的 Drupal 变化展示