Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Drupal:如何知道tid(术语id)的类型?_Drupal - Fatal编程技术网

Drupal:如何知道tid(术语id)的类型?

Drupal:如何知道tid(术语id)的类型?,drupal,Drupal,我需要知道term_数据表中tid的类型。例如,我想知道这个tid是否是一种ed分类广告模块 这是我现在的问题,不是100%正确 # get all the parent categories for the ed classifieds SELECT th.tid, td.name, n.type FROM term_hierarchy th LEFT JOIN term_data td ON th.tid = td.tid LEFT JOIN term_node tn ON tn.tid

我需要知道term_数据表中tid的类型。例如,我想知道这个tid是否是一种ed分类广告模块

这是我现在的问题,不是100%正确

# get all the parent categories for the ed classifieds
SELECT th.tid, td.name, n.type
FROM term_hierarchy th 
LEFT JOIN term_data td ON th.tid = td.tid 
LEFT JOIN term_node tn ON tn.tid = td.tid 
LEFT JOIN node n ON n.nid = tn.nid
WHERE th.parent = '0' 
#AND n.type = 'ed_classified' 
GROUP BY th.tid

提前谢谢

这里可能有点混乱。术语本身只是自由浮动的实体,如自由标记或类别。它们可以分为“词汇表”——词汇表id存储在term_数据表的“vid”列中


在该查询中提取的“节点类型”是用分类术语标记的节点的内容类型。这种类型不是术语本身固有的——一个给定的术语可以用来同时标记许多不同类型的内容。但是,一个术语只能属于一个词汇表。

除了eaton所说的(通常是正确的)之外,请注意,术语节点通过nid+vid连接到节点,而不仅仅是nid:自Drupal 6以来,术语依赖于版本


所以你的最后一次加入应该是在n.vid=tn.vid上,而不是在n.nid=tn.nid上

谢谢伊顿的澄清:)那么你是想说“tid”根本没有类型?我说得对吗?不管怎么说,我试过了,效果很好。它删除了分类广告的父类别。$cats=taxonomy\u get\u tree(\u ed\u classified\u get\u vid(),$tid,-1,1);我想。你似乎在谈论两件事——术语所属的词汇表,如果给定术语是术语层次树的一部分,则为“父术语”,以及给定节点所连接的术语。taxonomy_get_tree()提取词汇表中所有术语的层次结构。taxonomy_get_parents()获取给定术语的父术语。taxonomy_get_node_terms()获取节点标记的分类术语。查看并搜索“taxonomy\u get\”——它应该会提供一些可能对您有用的实用函数。