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


Почаще бывайте на нашем сайте. Порно русское посмотреть не забывайте. | международные автомобильные перевозки грузов
Авторы решений:

Задача

Вывести иерархический список терминов определённого словаря с сортировкой терминов по алфавиту. Для каждого термина вывести список документов в нём.

Решение

<?php
$vid
= 3// Номер словаря
$pole = array();
$items = array();
$terms = taxonomy_get_tree($vid);
usort($terms,create_function('$a,$b','return strcasecmp ($a->name,$b->name);'));
foreach (
$terms as $term ) {
 
$count = db_result(db_query("SELECT COUNT(nid) FROM {term_node} WHERE tid = %d", $term->tid));
 
$pole[]=Array (l($term->name, "taxonomy/term/$term->tid") . " ($count)", $term->depth, $count, $term->tid)  ;
}
 
$depth =-1;
  foreach (
$pole as $list) {
    if (
$list[1] > $depth) echo "\n<ul>";
    if (
$list[1] < $depth) echo "\n</li>\n</ul>\n</li>";
    if (
$list[1] == $depth) echo "</li>";
   
$poc++;
    echo
"\n<li>$list[0]";
if (
$list[2]>0) {
      echo
"\n<ul>";
     
$result = db_query("SELECT n.title, n.nid FROM {term_node} t INNER JOIN {node} n ON t.nid=n.nid WHERE t.tid=$list[3] ORDER BY n.title ASC");
      while(
$zaznam = db_fetch_array($result)) {
       
$node_link = l($zaznam[title], "node/$zaznam[nid]");
        echo
"\n<li>$node_link</li>";
      }
      echo
"\n</ul>";
  }
   
$depth=$list[1];
}
echo
"</li>\n</ul>";
?>

Использованные материалы

Полезные ссылки

Creative Commons: ­Attribution-Share Alike 2.5

Данные материалы выложены под лицензией Creative Commons: ­Attribution-Share Alike 2.5. Это значит, что вы можете распространять, копировать и модифицировать эти произведения при условии упоминания авторства оригинала, и при условии, что они также будут распространяться на условиях этой лицензии (то есть, изменённую работу нельзя защитить копирайтом). Подробнее смотри: http://ru.wikipedia.org/wiki/Creative_Commons