Cuối cùng, tôi đã tạo mô-đun tùy chỉnh của riêng mình để lấy các điều khoản từ cơ sở dữ liệu và nhóm / sắp xếp chúng.
Xin lưu ý rằng tôi đã sửa đổi mã dưới đây một chút để đăng và tôi chưa kiểm tra phiên bản sửa đổi. Cũng đáng lưu ý rằng nó được viết cho một trang web sử dụng PostgreSQL, nhưng nó sẽ hoạt động với MySQL.
/**
* Implements hook_block_info().
*/
function MYMODULE_block_info() {
$blocks['poptags'] = array(
'info' => t('Most Popular Tags'),
'cache' => DRUPAL_NO_CACHE
);
return $blocks;
}
/**
* Implements hook_block_view().
*/
function MYMODULE_block_view($delta = '') {
$block = array();
switch ($delta) {
case 'poptags':
$block['subject'] = t('Most Popular Tags');
$block['content'] = _MYMODULE_popular_terms();
break;
}
return $block;
}
function _MYMODULE_popular_terms() {
$vocabId = 1;
$links = array();
$results = db_query_range('SELECT taxonomy_term_data.tid, taxonomy_term_data.name, count(taxonomy_term_data.tid) AS times_used FROM taxonomy_term_data INNER JOIN taxonomy_index ON taxonomy_term_data.tid = taxonomy_index.tid WHERE taxonomy_term_data.vid = :vid GROUP BY taxonomy_term_data.tid, taxonomy_term_data.name ORDER BY times_used DESC', 0, 10, array(':vid' => $vocabId));
foreach ($results as $term) {
$links['term-link-' . db_escape_field($term->name)] = array('title' => $term->name, 'href' => drupal_get_path_alias('taxonomy/term/' . $term->tid));
}
return theme('links', array('links' => $links, 'attributes' => array('class' => 'term-links')));
}
Đừng quên thay đổi MYMODULE
tên của mô-đun của bạn. Cuối cùng thay đổi $vocabId = 1
dòng trong _MYMODULE_popular_terms
hàm thành vid (id từ vựng) của từ vựng mà bạn muốn liệt kê các thuật ngữ.
Lưu ý rằng đây chỉ dành cho Drupal 7, mặc dù sẽ không mất nhiều thời gian để chuyển nó sang Drupal 6.