Code | 依照層級列出分類

in

Drupal的分類功能(Taxonomy)很讚,但很可惜就是分類的顯示方式非常陽春,無論是文章分類、標籤等等,顯示方式都是在node頁面的link下面,假設分類有階層(A分類底下的B),他也只會把B顯示出來而已。

本篇的code是可以讓文章頁面顯示依照階層來顯示,像是這樣:
貓>飼料>奶粉
狗>營養品>奶類

下方Code為Drupal5或6都適用

<?php if ($node->taxonomy): ?>
  <ul class="product_cate_list">
    <?php 
    foreach($node->taxonomy as $key => $term)
         {
           print '<li>';
           $all_parents = taxonomy_get_parents_all($key);
           $items = array();
           foreach($all_parents as $pkey => $all_parent){
            array_unshift($items, l($all_parent->name, 'node/' . $all_parent->tid)); //把新的項目加到陣列的開頭
           }
           print join('>', $items); //將陣列中的的每個項目以>作為分隔字元連接起來成為一個字串
           print '</li>';
    }  ?>
  </ul>
<?php endif; ?>

如果只想想是某種分類(Vocabulary)的層級,則服用以下:
(記得修改$vid變數)

<?php if ($node->taxonomy): ?>
  <ul class="product_cate_list">
    <?php
    foreach($node->taxonomy as $key => $term){
      $vid = '4'; //只顯示Vocabulary 是4的分類
      print '<li>';
      $all_parents = taxonomy_get_parents_all($key);
      $tkey = taxonomy_get_term($all_parents['0']->tid);
      $items = array();
 
      if($tkey->vid == $vid){
        //print kprint_r($tkey);
        foreach($all_parents as $pkey => $all_parent){
          array_unshift($items, l($all_parent->name, 'node/' . $all_parent->tid)); //把新的項目加到陣列的開頭
        }
      }
      print join('>', $items); //將陣列中的的每個項目以>作為分隔字元連接起來成為一個字串
      print '</li>';
   } ?>
  </ul>
<?php endif; ?>

回應

這個層級列出分類的修改code真是實用,這 樣就方便多了^^

fm5wdH demjtzexeljt, [url=http://mypgcvxwexxr.com/]mypgcvxwexxr[/url], [link=http://yyurubjhxdut.com/]yyurubjhxdut[/link], http://iejkawhplyng.com/

發表新回應

這個欄位的內容會保密,不會公開顯示。
  • 自動將網址與電子郵件位址轉變為連結。
  • 可使用的 HTML 標籤:<a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • 自動斷行和分段。

更多關於格式選項的資訊