Имя
Сергей
Список терминов определенного словаря, с подсчетом количество документов отмеченных термином, с сортировкой по количеству документов как по возрастанию, так и по убыванию (наверное лишнее, так как скорей всего сортировать будут только по убыванию). Показ ограниченного количества терминов и ограничение показа терминов по количество документов.
→ Пример для страницы:
<?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