Bagaimana Anda bisa mengurutkan istilah taksonomi berdasarkan jumlah kali digunakan, dalam tampilan?


8

Saya membuat tampilan yang mencantumkan 10 istilah taksonomi (tag) terpopuler. Saat ini saya memiliki pandangan untuk mengembalikan semua persyaratan dan saya dapat membatasi tampilan sampai 10 tetapi saya tidak dapat menentukan bagaimana cara memesan persyaratan berdasarkan popularitas (yaitu berapa kali digunakan di semua node).

Adakah yang punya pengalaman tentang ini?

Jawaban:


9
  1. Buat tampilan baru
  2. batas taksonomi "tampilkan taksonomi istilah semua"
  3. Tambahkan hubungan "Istilah taksonomi: Konten dengan term"
  4. Gunakan agregasi
  5. Tambahkan bidang "Konten: Judul"
  6. Jenis agregasi "Hitung"
  7. Ubah label menjadi sesuatu seperti "berapa kali digunakan"
  8. Tambahkan Sortir kriteria "Konten: Judul"
  9. Jenis agregasi "Hitung"
  10. Sortir sesuai keinginan Anda

seharusnya terlihat seperti ini:

pandangan hasil


Saya pikir ini berfungsi dengan benar, pilih
Yusef

Masih bekerja dengan Drupal 8!
Insasse

saat canggung ketika Anda mendapatkan pemberitahuan dari SE dan Anda membaca jawaban Anda sendiri dari 7 tahun yang lalu dan Anda berkata "wow, apa yang saya katakan?"
saadlulu

0

Views 3 memiliki fitur "kelompok per" (sangat beta); Anda harus dapat menggunakan ini dan memesan bidang hitung.

Saya tidak akan menjamin itu berfungsi, tetapi mungkin patut dicoba.


Saya mencoba dan mencoba dan tidak berhasil. :-(
Camsoft

Maaf mendengarnya, saya pernah menggunakannya dengan sesuatu di masa lalu, tetapi dibatasi oleh itu tidak menggunakan bidang CCK. Sudah sampai di sana tetapi belum.
Jeremy French

"Sangat beta" harus cukup untuk tidak menganggap ini sebagai jawaban :) -1, untuk fakta bahwa jawaban menunjuk ke solusi yang (masih) diketahui memiliki kekurangan, tidak stabil dan lebih pasti tidak akan berfungsi kemudian bekerja .
berkelanjutan

itu masih membantu bagi saya untuk mengetahui Tampilan 3 harus dapat menanganinya segera. Terima kasih atas klarifikasi!
uwe

0

Pada akhirnya saya membuat modul khusus saya sendiri untuk mendapatkan persyaratan dari database dan mengelompokkannya / mengurutkannya.

Harap dicatat bahwa saya sedikit mengubah kode di bawah ini untuk posting dan saya belum menguji versi yang dimodifikasi. Perlu juga dicatat bahwa ini ditulis untuk situs yang menggunakan PostgreSQL, tetapi harus bekerja dengan 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')));
}

Jangan lupa ganti MYMODULEnama modul Anda. Terakhir, ubah $vocabId = 1baris dalam _MYMODULE_popular_termsfungsi menjadi vid (id kosakata) dari kosakata yang ingin Anda daftarkan syaratnya.

Perhatikan ini hanya untuk Drupal 7, meskipun tidak perlu banyak port ke Drupal 6.


0

Anda dapat menarik data dari 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;

Satu-satunya downside adalah bahwa tagadelic menambahkan beberapa overhead kecil untuk menghitung "berat", biasanya untuk menyajikan ukuran tag, yang tidak akan Anda gunakan.

Keuntungannya adalah Anda mendapatkan caching secara gratis.


Saya pikir solusi saya mungkin memiliki overhead paling sedikit, karena itu hanya permintaan sederhana. Juga pertanyaannya adalah tentang Drupal7 dan Tagadelic tidak memiliki rilis d7.
Camsoft
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.