You are here

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

g089h515r806 的头像
Submitted by g089h515r806 on 星期五, 2009-08-21 15:58

老葛的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,这意味着所有的层次。这个函数返回了一个包含术语对象的数组,这里向术语对象添加了depthparents键。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 )
    )
)
 

Drupal版本: