Создание меню на основе словаря таксономии

Очень часто необходимо иметь на сайте меню (или несколько меню), которые были бы составлены на основе списка словарей таксономии и сохраняли вложенность словаря. И хорошо бы, чтобы они автоматически обновлялись при добавлении/удалении термина в словаре и показывали количество материала с использованием конкретного термина.

 

Для создания подобного меню можно применить следующий код на php, который нужно просто добавить в новый блок, не забыв установить в нем формат вывода «php». Единственной настройкой получившегося меню будет указание словаря, на основе которого это меню будет составлено.

<?php
$vid 
3;  // Номер словаря
$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));
  
$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 
"</li>";
    
next;
  }
  while (
$list[1] != $depth) {
    if (
$list[1] > $depth) {
      
$depth++;
      echo 
"\n<ul>";
      
next;
    }
    if (
$list[1] < $depth) {
      
$depth--;
      echo 
"\n</li>\n</ul>";
    }
  }

  echo

"\n<li>$list[0]";
  
$depth=$list[1];
}

 

//Закрываем все открытые теги до нулевого уровня:
$depth=0;
while (
$list[1] != $depth) {
  if (
$list[1] > $depth) {
    
$depth++;
    echo 
"</li>\n</ul>";
  }
}
?>

 

Автора автора