Список терминов определённого словаря с иерархией (+ количество документов)

Этот код выводит иерархический список терминов определённого словаря таксономии.
Каждый термин является ссылкой на страницу с анонсами статей, принадлежащих этому термину.
Рядом с каждым термином выводится количество документов.
Если документов нет, то нуль не выводится и название термина не является ссылкой.

Утащила код отсюда. И немного добавила, чтобы выводились только те термины, у которых есть опубликованные материалы.
Код:

$vid = 1;  // Номер словаря
$pole = array();
$items = array();
$terms = taxonomy_get_tree($vid);
//var_dump($terms);

foreach ( $terms as $term ) {
  $count = db_result(db_query("SELECT COUNT(nid) FROM {term_node} WHERE tid = %d", $term->tid));
  if (taxonomy_term_count_nodes($term->tid) > 0) //если есть ноды. Добавила!!!
    $pole[]=Array ((($count) ? l($term->name, "taxonomy/term/$term->tid")." (".$count.")" : $term->name), $term->depth, $count, $term->tid);
}
$depth =-1;
foreach ($pole as $list) {
  //$depth- глубина предыдущего уровня
  //$list[1] - глубина текущего элемента
  if ($list[1] == $depth) {
    echo "";
    next;
  }
  while ($list[1] != $depth) {
    if ($list[1] > $depth) {
      $depth++;
      echo "\n
    "; next; } if ($list[1] < $depth) { $depth--; echo "\n\n
"; } } echo "\n
  • $list[0]"; $depth=$list[1]; } //Закрываем все открытые теги до нулевого уровня: $depth=0; while ($list[1] != $depth) { if ($list[1] > $depth) { $depth++; echo "
  • \n"; } }
    Рекомендовать в Социальных сетях:
     

    Добавить комментарий

    Ваш e-mail не будет опубликован. Обязательные поля помечены *

    Отель Bellagio в Лас-Вегасе