Выводим список терминов из словаря с помощью сниппета
Решил отказаться от модуля Taxonomy Block, выводящий список разделов блога, в пользу сниппета (что такое сниппет и как им пользоваться). Причина — уж больно много запросов он (Taxonomy Block) делает для вывода простого списка.
Собственно код сниппета:
Drupal 6:
<?php
$terms = db_query("
SELECT tid, name, (
SELECT COUNT(*) FROM {term_node} tn
LEFT JOIN {node} n ON tn.nid = n.nid
WHERE tn.tid = td.tid AND n.status = 1
) node_count FROM {term_data} td
WHERE vid = %d
ORDER BY weight
", ID_СЛОВАРЯ);
$items = array();
while ($term = db_fetch_array($terms)) {
$items[] = l($term['name'], 'taxonomy/term/' . $term['tid']) . ' (' . $term['node_count'] . ')';
}
echo theme('item_list', $items);
?>
Drupal 7:
$terms = db_query("
SELECT tid, name, (
SELECT COUNT(*) FROM {taxonomy_index} ti
LEFT JOIN {node} n ON ti.nid = n.nid
WHERE ti.tid = td.tid AND n.status = 1
) node_count FROM {taxonomy_term_data} td
WHERE vid = :vid
ORDER BY weight
", array(':vid' => ID_СЛОВАРЯ));
$items = array();
foreach ($terms as $term) {
$items[] = l($term->name, 'taxonomy/term/' . $term->tid) . ' (' . $term->node_count . ')';
}
echo theme('item_list', array('items' => $items));
Вместо ID_СЛОВАРЯ нужно указать номер словаря в котором находится список разделов.
Комментарии:
Нету комментариев для вывода...