Drupal:分层分类学面包屑跟踪

时间:2009-09-24 17:31:25

标签: php drupal drupal-6

我正在寻找从分类术语(例如祖父母/父/子)生成分层面包屑,而我所拥有的只是“孩子”的TID。我一直在玩taxonomy_get_tree(),但没有非常繁重的迭代似乎很难做到。必须有一个更简单的方法。

思想?

谢谢!

4 个答案:

答案 0 :(得分:3)

Taxonomy Breadcrumb似乎提供了此功能。

如果您不想使用该模块,代码可能会提供灵感。

答案 1 :(得分:0)

这就是我的所作所为:

$breadcrumb[] = l(t('Home'), NULL);
if ($parents = taxonomy_get_parents_all($tid)) {
  $parents = array_reverse($parents);
  foreach ($parents as $p) {
    $breadcrumb[] = l($p->name, 'taxonomy/term/'. $p->tid);
  }
}
drupal_set_breadcrumb($breadcrumb);

我通常会将其添加到hook_view()函数或hook_nodeapi($op="view")函数中。

答案 2 :(得分:0)

如果您使用的是Drupal 7,那么Taxonomy Breadcrumb还是开发版,您必须编写代码。

更完整的解决方案可能如下(将此功能放在YOUR_THEME_NAME / template.php中)

function YOUR_THEME_NAME_breadcrumb( $variables )
{
    // init
    $breadcrumb = $variables['breadcrumb'];

    // taxonomy hierarchy
    $hierarchy = array();
    if (arg(0) == 'taxonomy' && arg(1) == 'term' && is_numeric(arg(2))) 
    {
        $tid = (int)arg(2);
        $parents = array_reverse(taxonomy_get_parents_all($tid));
        foreach( $parents as $k=>$v)
        {
            if( $v->tid==$tid ) continue;
            $breadcrumb[] = l($v->name, 'taxonomy/term/'. $v->tid);;
        }
    }

    // rendering
    if (!empty($breadcrumb))
    {
        $output = '<h2 class="element-invisible">' . t('You are here') . '</h2>';
        $output .= '<div class="breadcrumb">' . implode("<span class='separator'>&raquo;</span>", $breadcrumb) . '</div>';
        return $output;
    }
}

答案 3 :(得分:0)

function yourthemename_breadcrumb( $variables )
{// init
    $breadcrumb = $variables['breadcrumb'];

    // taxonomy hierarchy
    $hierarchy = array();
    if (arg(0) == 'taxonomy' && arg(1) == 'term' && is_numeric(arg(2))) 
    {
        $tid = (int)arg(2);
        $parents = taxonomy_get_parents_all($tid); dpm($parents);
        $parents = array_reverse($parents);dpm($parents);
        $breadcrumb = array();
        $breadcrumb[] = l('Home', '/');
         foreach( $parents as $k=>$v)
        { 
            $breadcrumb[] = l($v->name, 'taxonomy/term/'. $v->tid);;
        }
    }
    // rendering
    if (!empty($breadcrumb))
    {
        $output = '<h2 class="element-invisible">' . t('You are here') . '</h2>';
        $output .= '<div class="breadcrumb">' . implode("<span class='separator'>&raquo;</span>", $breadcrumb) . '</div>';
        return $output;
    }

}