Есть массив терминов вытащенный из $node, все термины одного словаря и являются вложенными, т.е. по сути это один термин, его подтермин и подтермин подтермина, проблема в том что в массиве вложенность никак не отображается и сортировка тоже не корректная. Нужно для каждого термина определить его вложенность (что бы раскрыть меню в нужное положение). Прошу совета если кто сталкивался, знает.
<?php
Array
(
[16] => stdClass Object
(
[tid] => 16
[vid] => 2
[name] => Кольорові
[description] =>
[weight] => 0
)
[
12] => stdClass Object
(
[tid] => 12
[vid] => 2
[name] => Xerox
[description] =>
[weight] => 1
)
[
9] => stdClass Object
(
[tid] => 9
[vid] => 2
[name] => Багатофункціональні пристрої
[description] =>
[weight] => 7
)
)
?>
Пока вижу один вариант, в цикле пробовать найти родителя для каждого термина и выставлять соответствующие маркеры. Но мне не нравится...
Комментарии
Почитайте http://api.drupal.ru/api/function/taxonomy_get_tree/6
вдруг поможет
Не поможет, нужной мне функции в друпал АПИ нет.
Пока сделал та:
<?php
$terms = taxonomy_node_get_terms_by_vocabulary($node, 2, 'tid');
$depth = array();
foreach($terms as $tid => $term){
$depth[$tid] = 0;
$parents = taxonomy_get_parents($tid, 'vid');
if($parents){
$depth[$tid] = 1;
$parents2 = taxonomy_get_parents($parents[2]->tid, 'vid');
if($parents2){
$depth[$tid] = 2;
}
}
}
$depth = array_flip($depth);
?>
А вы попробуйте.
Функция taxonomy_get_tree, вызванная для словаря, возвращает структуру вида:
(
[0] => stdClass Object
(
[tid] => 3
[vid] => 3
[name] => Термин 1
[depth] => 0
[parents] => Array
(
[0] => 0
)
)
)
Как видим глубина термина присутствует(depth)
Я эту функцию использую в 90% своих модулей, так что не надо ля ля. Прочтите первый пост и попытайтесь понять что я спросил)