Drupal: Hiyerarşik taxonomical kırıntı izi

3 Cevap php

Ben tüm "çocuk" TID olduğunda bir taksonomi terimi (örneğin büyükbaba / ebeveyn / çocuk) hiyerarşik bir kırıntı oluşturmak için arıyorum. I taxonomy_get_tree() ile etrafında oynuyor oldum, ama çok ağır yineleme olmadan yapmak oldukça zor görünüyor. Daha kolay bir yolu olmalı.

Düşünceler?

Teşekkürler!

3 Cevap

Bu benim ne olduğunu:

$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);

Ben genellikle bir hook_view() fonksiyonu veya hook_nodeapi($op="view") işlevi bu çakacağım.

Taxonomy Breadcrumb bu işlevselliği sağlamak gibi görünüyor.

Eğer modülünü kullanmak istemiyorsanız, kod ilham kaynağı olabilir.

Eğer Drupal 7 kullanıyorsanız, Taksonomi Breadcrumb dev sürümü henüz ve kod var.

Daha tam bir çözüm (YOUR_THEME_NAME / template.php bu işlevi koymak) takip olabilir

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;
    }
}