it-swarm-id.com

Bagaimana cara menambahkan dropdown dalam Kriteria Filter dalam modul Tampilan?

Saya berada di pertemuan grup lokal Drupal minggu lalu di mana seorang anggota menjalankan presentasi modul Views. Saya sangat senang ketika saya melihat bahwa ia dapat menambahkan dropdown pada Kriteria Filter yang dia menggunakan karena saya membutuhkan fungsi itu untuk sesuatu yang saya bangun.

Masalahnya adalah: Saya tidak dapat menemukan pengaturan sama sekali di build saya. Saya ingat ada tautan 'pengaturan' di bagian bawah area Kriteria Filter-nya, tapi saya tidak punya yang seperti itu.

Adakah yang bisa menjelaskan di mana saya dapat menemukan ini? Apakah saya hilang dan modul tambahan?

5
Martin Duys

Filter dalam tampilan dan bagaimana mereka terpapar ke pengguna bereaksi sedikit berbeda tergantung pada jenis filter yang digunakan. Jenis filter yang digunakan, dikendalikan dengan mendefinisikan data untuk dilihat menggunakan hook_views_data dan hook_views_data_alter. Ini adalah sedikit kode heave dan tidak selalu sesuatu yang perlu Anda lakukan sendiri karena banyak modul termasuk tampilan yang banyak membantu Anda.

Dua filter umum yang digunakan adalah

  • views_handler_filter_in_operator
  • views_handler_filter_string

Keduanya secara fundamental berbeda karena asumsi dan persyaratan mereka sangat berbeda.

Yang pertama, adalah yang ingin Anda gunakan. Ini digunakan ketika Anda menyimpan nilai yang memiliki daftar nilai yang mungkin. Contohnya bisa tipe konten yang merupakan contoh yang digunakan @Danielle dalam postingnya. Karena node tidak dapat memiliki nilai acak apa pun untuk jenis kontennya, dimungkinkan bagi tampilan untuk menampilkan daftar kotak centang di antarmuka Admin saat menggunakan filter ini dan daftar pilih/beberapa daftar pilih untuk pengguna saat terpapar.

Yang kedua digunakan saat string disimpan dalam database. Menggunakan node sebagai contoh, bidang judul akan menjadi kandidat yang baik untuk filter semacam itu. Karena judul dapat berupa teks apa pun, tidak masuk akal untuk mengekspos pemilihan judul suatu node sebagai kotak centang atau daftar pilih, sebaliknya Anda mendapatkan beberapa opsi lain seperti yang Anda lihat dalam tampilan Anda. Anda dapat memfilter berdasarkan jika string berisi kata (awal/akhir/di suatu tempat), panjangnya dll.

Jika orang yang melakukan integrasi views tidak repot menggunakan in_operator jenis filter, dan jelaskan ke tampilan (dengan menggunakan fungsi php) opsi mana yang tersedia, Anda harus melakukannya menggunakan hook_views_data_alter.

Yang perlu Anda lakukan adalah:

  1. Buat subkelas views_handler_filter_in_operator
  2. Implementasi get_value_options
  3. Beri tahu pandangan tentang penangan baru Anda.

Dalam kode akan terlihat seperti ini

/**
 * Define my custom in_opeator
 */
class my_custom_in_operator extends views_handler_filter_in_operator {
  // overwrite the get_value_options function.
  function get_value_options() {
    if (isset($this->value_options)) {
      return;
    }
    $this->value_options array('option_1' => t('Option 1'), 'option_2' => t('Option 2'));
  }
}

/**
 * Implements hook_views_data_alter().
 */
function my_custom_views_data_alter(&$data) {
  $data['entity_type']['property']['filter']['handler'] = 'my_custom_in_operator';
}

Dan kamu sudah selesai. Pada kenyataannya itu sebenarnya cukup sederhana. Tetapi mencari tahu bagaimana melakukannya bukan karena pandangannya cukup kompleks.

10
googletorp

Apakah Anda mengizinkan beberapa nilai di filter terbuka Anda? Jika demikian, pilihan akan muncul di kotak pilih dengan bilah gulir secara default. Jika Anda memaksakan satu pilihan saja, filter terbuka Anda akan muncul secara turun-temurun. Saya harap ini membantu!

5
Danielle