Làm thế nào bạn có thể sắp xếp các thuật ngữ phân loại dựa trên số lần được sử dụng, trong một khung nhìn?


8

Tôi đang tạo một chế độ xem liệt kê 10 thuật ngữ phân loại phổ biến nhất (thẻ). Hiện tại tôi có chế độ xem trả về tất cả các điều khoản và tôi có thể giới hạn chế độ xem ở mức 10 nhưng tôi không thể tìm ra cách đặt hàng các điều khoản theo mức độ phổ biến (tức là số lần được sử dụng trên tất cả các nút).

Bất cứ ai có kinh nghiệm về điều này?

Câu trả lời:


9
  1. Tạo một cái nhìn mới
  2. giới hạn đối với các nguyên tắc phân loại "hiển thị các nguyên tắc phân loại của tất cả"
  3. Thêm mối quan hệ "Thuật ngữ phân loại: Nội dung có thời hạn"
  4. Sử dụng tổng hợp
  5. Thêm trường "Nội dung: Tiêu đề"
  6. Loại tổng hợp "Đếm"
  7. Thay đổi nhãn thành một cái gì đó như "số lần sử dụng"
  8. Thêm tiêu chí Sắp xếp "Nội dung: Tiêu đề"
  9. Loại tổng hợp "Đếm"
  10. Sắp xếp theo bất cứ điều gì bạn thích

Nó sẽ giống như thế này:

quan điểm kết quả


Tôi nghĩ rằng công việc này chính xác, bỏ phiếu lên
Yusef

Vẫn hoạt động với Drupal 8!
Bẻ khóa

khoảnh khắc khó xử đó khi bạn nhận được thông báo từ SE và bạn đã đọc câu trả lời của chính mình từ 7 năm trước và bạn nói "wow, tôi đang nói gì vậy?"
saadlulu

0

Lượt xem 3 có tính năng "nhóm theo" (rất beta); bạn sẽ có thể sử dụng cái này và đặt một trường đếm.

Tôi sẽ không đảm bảo nó hoạt động, nhưng nó có thể đáng để thử.


Tôi đã thử và thử và không thể làm cho nó hoạt động. :-(
Camsoft

Rất tiếc khi biết rằng, tôi đã có nó hoạt động với một cái gì đó trong quá khứ, nhưng bị giới hạn bởi nó không sử dụng các trường CCK. Nó đang đến đó nhưng chưa.
Jeremy Pháp

"Rất beta" là đủ để không coi đây là câu trả lời :) -1, vì thực tế là câu trả lời chỉ ra một giải pháp (vẫn) được biết là có sai sót, không ổn định và chắc chắn sẽ không hoạt động. .
berkes

Nó vẫn hữu ích cho tôi khi biết Lượt xem 3 sẽ có thể xử lý sớm. Cảm ơn đã làm rõ!
uwe

0

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 MYMODULEtên của mô-đun của bạn. Cuối cùng thay đổi $vocabId = 1dòng trong _MYMODULE_popular_termshà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.


0

Bạn có thể kéo dữ liệu từ tagadelic .

$output = '';
$vids = array(1, 2, 3, 4); #Taxonomy vocabulary-ids you want to be included.
$top_tags = tagadelic_get_weighted_tags($vids, 6, 10);
foreach ($terms as $term) {
  $weight = $term->weight;
  $output .= l($term->name, drupal_get_path_alias('taxonomy/term/' . $term->tid), array(
    'attributes' => array(
      'class' => array("tagadelic", "level$weight"),
      'rel' => 'tag',
      'title'  => $term->description,
      )
    )
  ) . " \n";
}

return $output;

Nhược điểm duy nhất là tagadelic thêm một số chi phí nhỏ để tính toán "trọng lượng", thường để trình bày các kích thước thẻ mà bạn sẽ không sử dụng.

Ưu điểm là bạn có được bộ nhớ đệm miễn phí.


Tôi nghĩ rằng giải pháp của tôi có thể có ít chi phí nhất, vì đó chỉ là một truy vấn đơn giản. Ngoài ra câu hỏi liên quan đến Drupal7 và Tagadelic không có bản phát hành d7.
Camsoft
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.