您在這裡

依照層級列出分類

hanamizuki's 的頭像
hanamizuki 在 2008-12-24 (三) 17:53 發表

因為每個商品屬於很多分類,所以希望在商品頁面可以有個
「這個商品屬於」
然後希望能用層級的方式列出,像是奶粉的產品頁,希望列出:
貓用>飼料>奶粉
貓用>營養品>奶類

花了很多時間,結果寫這樣
<?php if ($node->taxonomy) { ?>

    <?php foreach($node->category as $key => $term)
    //註:因為我安裝category,所以是$node->category
    {
    print '
  • ';
    $all_parents=taxonomy_get_parents_all($key);
    sort($all_parents);
    foreach($all_parents as $pkey => $all_parent){
    //print '
    ';print_r($all_parent);print '

    ';
    print '>' . l($all_parent->name, 'node/' . $all_parent->tid);
    }
    print '

  • ';
    } ?>

<?php } ?>

像這樣,會顯示

>點心及營養品>營養品>奶粉
>飼料主食>奶粉/牛奶

有幾個問題
1.該如何把最前面的>刪掉呢?
2.我希望他按照順序排出來,但用php的sort好像沒用?
要如何請他按照$key的數字,倒著排出來呢?
print_r出的是這樣(他會依照0~3排出來,我希望依照3~0>"<)
Array
(
[0] => stdClass Object
(
[tid] => 162
[vid] => 152
[name] => 點心及營養品
[description] =>
[weight] => 0
)

[1] => stdClass Object
(
[tid] => 164
[vid] => 152
[name] => 營養品
[description] =>
[weight] => 0
)

[2] => stdClass Object
(
[tid] => 165
[vid] => 152
[name] => 奶粉
[description] =>
[weight] => 0
)

[3] => stdClass Object
(
[tid] => 166
[vid] => 152
[name] => 貓咪頻道
[description] =>
[weight] => 0
)

)


<?php if ($node->taxonomy) { ?>

    <?php foreach($node->category as $key => $term)
    //註:因為我安裝category,所以是$node->category
    {
    print '
  • ';
    $all_parents = taxonomy_get_parents_all($key);
    //sort($all_parents);
    $items = array();
    foreach($all_parents as $pkey => $all_parent){
    //print '
    ';print_r($all_parent);print '

    ';
    //print '>' . l($all_parent->name, 'node/' . $all_parent->tid);
    array_unshift($items, l($all_parent->name, 'node/' . $all_parent->tid)); //把新的項目加到陣列的開頭
    }
    print join('>', $items); //將陣列中的的每個項目以>作為分隔字元連接起來成為一個字串
    print '

  • ';
    } ?>

<?php } ?>