<?php
$vid = 90;
$terms = taxonomy_get_children(0, $vid);
if (count($terms)) {
echo '<ul>';
foreach ($terms as $term){
echo "<li>" . l($term->name, taxonomy_term_path ($term)) ;
$cnt = taxonomy_term_count_nodes($term->tid);
if ($cnt) echo " <b>($cnt)</b>";
else echo " <b>(0)</b>";
echo "</li>";
}
echo '</ul>';
}?>
По идее должен выводиться список терминов верхнего уровня с количеством нод этих терминов в скобках. Но taxonomy_term_count_nodes почему то считает и дальше по иерархии термины. В итоге число выходит примерно в 4 раза больше, т.е. он суммирует кол-во нод всех терминов в линейке. Что я делаю не так?
Комментарии
может лучше юзать taxonomy_get_tree()?
<?php$vid = 90;
$terms = taxonomy_get_tree($vid, $parent = 0, $depth = -1, $max_depth = 1);
if (count($terms))?>
Выводит тоже самое неправильное число.
В итоге выкрутился так.
<?php
$vid = 90;
$terms = taxonomy_get_children(0, $vid);
if (count($terms)) {
echo '<ul>';
foreach ($terms as $term){
echo "<li>" . l($term->name, taxonomy_term_path ($term)) ;
$cnt = db_result(db_query("SELECT COUNT( n.nid ) FROM {node} n INNER JOIN {term_node} t ON n.vid = t.vid AND t.tid = $term->tid GROUP BY t.tid"));
if ($cnt) echo " <b>($cnt)</b>";
else echo " <b>(0)</b>";
echo "</li>";
}
echo '</ul>';
}?>