Количество нод в дочерних терминах

Главные вкладки

Аватар пользователя MicroSD MicroSD 7 ноября 2010 в 20:54

Здравствуйте, уважаемые поклонники друпала
Помогите пожалуйста решить одну задачу.

Есть код который выводит список терминов таксономии и количество дочерних терминов для каждого термина родителя

<?php
$vid = 3;
$terms = taxonomy_get_children(0, $vid);
if (count($terms)) {
echo '

    ';
    foreach ($terms as $term){
    echo "
  • tid'>" . l($term->name, taxonomy_term_path ($term)) ;
    $children = taxonomy_get_children($term->tid, $vid);
    $cnt = count($children);
    if ($cnt) echo " ($cnt)";
    echo "
  • ";
    }
    echo '

';
}
?>

Скажите пожалуйста как вместо кол-ва дочерних терминов вывести кол-во нод в дочерних терминах.

Для наглядности пример:

Есть термины таксономии:

термин1
дочерний термин 1 (имеет допустим 20 нод)
дочерний термин 2 (25 нод)
дочерний термин 3 (10 нод)
термин2
дочерний термин 1 (имеет допустим 5 нод)
дочерний термин 2 (30 нод)

Код выводит так

термин1 (3) - кол-во дочерних терминов
термин2 (2) - кол-во дочерних терминов

А нужно:

термин1 (55) - кол-во дочерних нод
термин2 (15) - кол-во дочерних нод

ПОМОГИТЕ, ПОЖАЛУЙСТА!!!

Комментарии

Аватар пользователя annya annya 8 ноября 2010 в 14:15

Напишите что-то вроде такого.

$query = db_query("SELECT tn.nid
                  FROM {node} node
                  INNER JOIN {term_node} tn ON node.vid = tn.vid
                  INNER JOIN {term_data} td ON td.tid = tn.tid
                  WHERE node.status = 1
                  AND td.vid = %d"
, 3);
while ($data = db_fetch_object($query)) {
  $count[$data->tid] = ++$count[$data->tid];
}

Пример: У вас есть словарь Фрукты и у него vid = 3. В этом словаре есть термины c tid = 1,2,3,4,5. В результате исполнения вышеназванного кода у вас должно получится: count[1] - количество нод у термина с tid = 1, count[2] - количество нод у термина с tid = 2, и так дальше.
P.S. Код в действии не проверялся-писался на лету!