Taxonomy 分類是可以多層的, 樹狀的
但有一個很大的問題, 就是 taxonomy_get_term(), node_load() 的時候的分類並沒有有關層的參數
即是, 雖然分類有層級, 但我並不知道這個分類是最頂層, 中間, 還是最底
這個問題一直很困擾, 因為像以下的例子:
- China
- Beijing
- Shanghai
就不能輕易找出"城巿"了
最近找到一個比較可行的方法
1. hierarchical_select
一個方便的功能, 能令你的層級選擇的時候更人性化
我使用的設定是將每一層的分類都儲存, 而不是只是儲存末諯分類
2. content taxonomy
不使用原生的 分類連到 content type
而使用 cck 將 taxonomy 到 content type
3. computed field
最重要, 作用是將從 hierarchical_select 的分類分層, 再每一層記錄分類
如上例中, 需要建立兩個 computed field, 一個儲存國家, 一個城巿
需要有的資料的時候就從 computed field 取出
而不從一般的 taxonomy 最出
實際的代碼:
<?php
$country = array_slice($node->field_country,-2,1);
$t = taxonomy_get_term($country[0]['value']);
$node_field[0]['value'] = $t->name;
?>
有關 computed field 的使用方法可參考 Computed Field: 在另一個檔案提供代碼算式 compute in file