Количестно нод терминов верхнего уровня

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

Аватар пользователя scandi scandi 10 августа 2010 в 16:22
<?php
$vid 
90;
$terms taxonomy_get_children(0$vid);
if (
count($terms)) {
  echo 
'<ul>';
  foreach (
$terms as $term){
    echo 
"<li>" l($term->nametaxonomy_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 раза больше, т.е. он суммирует кол-во нод всех терминов в линейке. Что я делаю не так?

Комментарии

Аватар пользователя scandi scandi 10 августа 2010 в 16:41
<?php$vid = 90;
$terms = taxonomy_get_tree($vid, $parent = 0, $depth = -1, $max_depth = 1);
if (count($terms))?>

Выводит тоже самое неправильное число.

Аватар пользователя scandi scandi 10 августа 2010 в 18:16

В итоге выкрутился так.


<?php
$vid 
90;
$terms taxonomy_get_children(0$vid);
if (
count($terms)) {
  echo 
'<ul>';
  foreach (
$terms as $term){
    echo 
"<li>" l($term->nametaxonomy_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>';
}
?>