【问题标题】:Drupal: Hierarchical taxonomical breadcrumb trailDrupal:分层分类面包屑路径
【发布时间】:2009-09-24 17:31:24
【问题描述】:

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

想法?

谢谢!

【问题讨论】:

    标签: php drupal drupal-6


    【解决方案1】:

    Taxonomy Breadcrumb 似乎提供了这个功能。

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

    【讨论】:

      【解决方案2】:

      这就是我的工作:

      $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") 函数中。

      【讨论】:

      • 答谢将我指向 taxonomy_get_parents_all()。谢谢!
      【解决方案3】:

      如果您使用的是 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;
          }
      }
      

      【讨论】:

        【解决方案4】:
        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;
            }
        
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-12-26
          • 1970-01-01
          • 2012-06-30
          • 2017-07-19
          • 1970-01-01
          相关资源
          最近更新 更多