老葛的Drupal培训班 Think in Drupal
当使用分层级的词汇表时,下面的函数会非常有用。
taxonomy_get_parents($tid, $key)
这个函数查找一个术语的上一层父亲;参数$tid是术语ID。参数$key默认为tid,它是term_data表(tid, vid, name,description, weight)中的一列。taxonomy_get_parents($tid, $key)返回一个包含术语对象的关联数组,以$key为键。
taxonomy_get_parents_all($tid)
这个函数找出一个术语的所有祖先;参数$tid是术语ID。这个函数返回一个包含术语对象的数组。
taxonomy_get_children($tid, $vid, $key)
taxonomy_get_children($tid, $vid, $key)函数查找一个术语的所有孩子。参数$tid是术语ID。参数$vid是可选的;如果一个词汇表的ID传了进来,那么该术语的孩子将被限制在这个词汇表中(注意,只有当术语有多个父亲,而父术语又位于不同的词汇表中时,这才有用,但是这种情况很少见)。参数$key默认为tid,它是term_data表(tid, vid, name,description, weight)中的一列。这个函数返回一个包含术语对象的关联数组,其中以$key为键。
taxonomy_get_tree($vid, $parent, $depth, $max_depth)
这个函数生成一个词汇表的分层级的表示。参数$vid就是词汇表ID,就是为词汇表生成术语树的。如果你不想为一个词汇表生成一个完整的术语树,而只想生成一个以$parent术语ID为根的子树,那么你可以声明参数$parent。参数$depth是内部使用的参数,默认为-1。参数$max_depth是一个整数,用来指出返回的树的层次数,它默认为NULL,这意味着所有的层次。这个函数返回了一个包含术语对象的数组,这里向术语对象添加了depth和parents键。depth键是一个整数,用来指示术语在树中所处的层次;而parents键是一个数组,包含了术语父亲的术语ID。让我们以表14-3所列的词汇表为例,它的词汇表ID为2,让我们获得它的结果:
$vid = 2;
print_r($taxonomy_get_tree($vid));
Array (
[0] => stdClass Object (
[tid] => 1
[vid] => 2
[name] => Canada
[description] => A mari usque ad mare.
[weight] => 0
[depth] => 0
[parents] => Array (
[0] => 0 )
)
[1] => stdClass Object (
[tid] => 4
[vid] => 2
[name] => Ontario
[description] => Ut incepit fidelis sic permanet.
[weight] => 0
[depth] => 1
[parents] => Array (
[0] => 1 )
)
[2] => stdClass Object (
[tid] => 5
[vid] => 2
[name] => Toronto
[description] => Diversity Our Strength.
[weight] => 0
[depth] => 2
[parents] => Array (
[0] => 4 )
)
[3] => stdClass Object (
[tid] => 2
[vid] => 2
[name] => British Columbia
[description] => Splendor sine occasu.
[weight] => 0
[depth] => 1
[parents] => Array (
[0] => 1 )
)
[4] => stdClass Object (
[tid] => 3
[vid] => 2
[name] => Vancouver
[description] => By Land, Sea and Air We Prosper.
[weight] => 0
[depth] => 2
[parents] => Array (
[0] => 2 )
)