Список терминов словаря + кол-во документов


Автор документа

Имя
Сергей

Сайт
http://sergey.vilgelm.googlepages.com/

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

→ Пример для страницы:

<?php
    $vid
= 2; // Номер словаря
   
$terms_count = 0; // Сколько терминов отображать, 0 - все
   
$show_node_count = true; // Показывать или нет количество нод
   
$show_min_count = false; // Показывать термины с большим количеством нод, -1  - все ноды
   
$sort = false; // Сортировать в порядке возрастания при true, а при false в порядке убывания
   
   
$output = '';
   
$items = array();
   
$term_name = array();
   
$terms = taxonomy_get_tree($vid);
    foreach (
$terms as $term) {
       
$count = db_result(db_query('SELECT COUNT(nid) FROM {term_node} WHERE tid = %d', $term->tid));
       
$items[$term->tid] = $count;
       
$term_name[$term->tid] = $term->name;
    }
    if (
$sort) {
       
asort($items, SORT_NUMERIC);
    } else {
       
arsort($items, SORT_NUMERIC);
    }
   
$list = array();
   
$i = 0;
    foreach (
$items as $term => $count) {
        if (
$count == $show_min_count) {
            break;
        }
       
$value = l($term_name[$term], 'taxonomy/term/'.$term);
        if (
$show_node_count) {
           
$value .= ' ['.$count.']';
        }
       
$list[] = $value;
       
$i++;
        if (
$i == $terms_count) {
            break;
        }
    }
    if (
count($list)) {
       
$output .= theme('item_list', $list);
    }
   
    print
$output;
?>


→ для блока:

<?php
    $vid
= 2; // Номер словаря
   
$terms_count = 10; // Сколько терминов отображать, 0 - все
   
$show_node_count = false; // Показывать или нет количество нод
   
$show_min_count = 1; // Показывать термины с большим количеством нод, -1  - все ноды
   
$sort = false; // Сортировать в порядке возрастания при true, а при false в порядке убывания
   
   
$output = '';
   
$items = array();
   
$term_name = array();
   
$terms = taxonomy_get_tree($vid);
    foreach (
$terms as $term) {
       
$count = db_result(db_query('SELECT COUNT(nid) FROM {term_node} WHERE tid = %d', $term->tid));
       
$items[$term->tid] = $count;
       
$term_name[$term->tid] = $term->name;
    }
    if (
$sort) {
       
asort($items, SORT_NUMERIC);
    } else {
       
arsort($items, SORT_NUMERIC);
    }
   
$list = array();
   
$i = 0;
    foreach (
$items as $term => $count) {
        if (
$count == $show_min_count) {
            break;
        }
       
$value = l($term_name[$term], 'taxonomy/term/'.$term);
        if (
$show_node_count) {
           
$value .= ' ['.$count.']';
        }
       
$list[] = $value;
       
$i++;
        if (
$i == $terms_count) {
            break;
        }
    }
    if (
count($list)) {
       
$output .= theme('item_list', $list);
    }
   
$output .= '<br />'.l(t('More...'), 'node/77');
   
    print
$output;
?>

Comments

Спасибо большое, очень полезная статья!

Post new comment

The content of this field is kept private and will not be shown publicly.
Image CAPTCHA
Copy the characters (respecting upper/lower case) from the image.