Drupal → Программно вывести облако тегов
// Настройки $vocabulary_vid = ID_СЛОВАРЯ; $max_font_size = 40; $min_font_size = 10; // Получаем термины с количеством нод $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' => $vocabulary_vid))->fetchAll(); // Находим термин с максимальным числом нод $max_node_count = 0; foreach ($terms as $term) { $max_node_count = max($max_node_count, $term->node_count); } // Наполняем облако $cloud_data = array(); foreach ($terms as $term) { $cur_font_size = round((($max_font_size - $min_font_size) * $term->node_count) / $max_node_count) + $min_font_size; $cloud_data[] = l($term->name, 'taxonomy/term/' . $term->tid, array( 'attributes' => array( 'style' => 'font-size:' . $cur_font_size . 'px;', ), )); } // Выводим облако echo implode("\n", $cloud_data);
Комментарии
Круто. Спасибо!
Оставить комментарий