По работе была необходимость перенести информацию (очень много информации) с сайта на древнем Drupal’е на 1С-Битрикс. В процессе нужно было получить термины из словаря. Приведенный ниже код решает данную задачу 🙂
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_СЛОВАРЯ
нужно указать номер словаря в котором находится список разделов.