Drupal专业开发指南 第14章 取回术语的相关信息

 

下面所列的内置函数用来取回术语的相关信息,返回的一般是对象或者是包含对象的数组。
 
taxonomy_get_term($tid)
这个函数取回一个术语(参数$tid是词语的ID),返回的是一个术语对象。它在内部缓存了术语对象,所以对同一术语的多次调用并不费事。术语对象的结构如下所示:
 
$term = taxonomy_get_term(5);
var_dump($term);
object(stdClass)#6 (5) {
    ["tid"] => string(1) "3"
    ["vid"] => string(1) "1"
    ["name"]=> string(9) "Vancouver"
    ["description"]=> string(32) "By Land, Sea, and Air we Prosper"
    ["weight"]=> string(1) "0"
}
 
taxonomy_get_term_by_name($text)
taxonomy_get_term_by_name($text)函数搜索匹配一个字符串(参数$text是一个字符串)的所有术语。$text中的空格将被除去,而匹配操作使用的查询为WHERE LOWER(t.name) = LOWER($text)。这个函数返回一个包含术语对象的数组。
 
taxonomy_node_get_terms($nid, $key)
这个函数查找与一个节点相关的所有术语。参数$nid是节点的ID,就是为该节点取回术语的;而参数$key默认为tid,它有点难以理解,它影响结果返回的方式。taxonomy_node_get_terms($nid, $key)返回一个数组的数组,以$key为键。因此,结果数组在默认情况下是以术语ID为键的,但是你也可以替换为term_data表(tid, vid, name, description, weight)中的任意一列。这个函数会为每个节点在内部缓存结果。
 
提示 对于传递进来的节点,这里只用到了它的属性$node->vid。如果你知道节点(为其取回术语)的版本ID,那么你可以使用一个伪造的带有$vid属性的节点对象,这样就避免调用费事的node_load()函数了,例如,$fake_node = new stdClass(); $fake_node->$vid = 12;
$terms = taxonomy_node_get_terms($fake_node);。
 
taxonomy_node_get_terms_by_vocabulary($nid, $vid, $key)
这个函数将在一个词汇表($vid)中查找与一个节点($nid)相关的所有术语。更多信息,可参看taxonomy_node_get_terms($nid, $key)中参数$key的描述。
 

老葛的Drupal培训班 Think in Drupal

Drupal版本: