Bagaimana cara menggabungkan tampilan filter yang terpapar dengan pencarian?

18

Klien saya meminta saya satu bidang, yang akan bekerja 2 cara:

  • Filter pelengkapan otomatis berdasarkan taksonomi.
  • Jika pengunjung situs memasukkan sesuatu yang tidak ada dalam taksonomi, pencarian teks lengkap harus dilakukan pada tubuh konten, dan pesan info yang sesuai ditampilkan.

Dengan begitu jika pengguna memasukkan nama kategori, ia akan mendapatkan node yang dipilih sendiri, dan jika ada yang lain, ia setidaknya akan mendapatkan beberapa konten.

Secara terpisah, itu mudah. Tetapi bagaimana cara menggabungkan perilaku ini dalam satu bidang?

Mołot
sumber
1
Secara terpisah itu mudah, modul mana yang Anda gunakan untuk memiliki pelengkapan otomatis berdasarkan taksonomi? Bagi saya triknya adalah kode javascript kecil yang akan memeriksa apakah tidak ada hasil mengubah aksi tombol kirim sehingga akan mengarahkan ulang ke / search / yourkeywordsearch
sel_space

Jawaban:

17

Modul Finder akan melakukan kebutuhan Anda dengan tepat, Anda dapat memilih istilah taksonomi serta judul node, tubuh, bidang, ..etc untuk melakukan pencarian.

Ada banyak cara untuk menyatukan fungsi pencari untuk mendapatkan jenis formulir pencarian yang Anda butuhkan. Ada juga banyak fungsi pengait dan tema yang memungkinkan kustomisasi penuh dari hasil finder.

Ini digunakan untuk tujuan ini:

As a search tool to find a group of nodes or users.
As a way to navigate to a specific node or user page that matches criteria.
As an alternative to exposed filters for a Views module display.

Lihat tangkapan layar di bawah ini, Di bidang pencari Anda dapat memilih istilah taksonomi serta badan simpul untuk melakukan pencarian di bidang terbuka lengkap otomatis, bahkan Anda dapat melakukan beberapa pencarian kata kunci yang dipisahkan oleh koma. Baca dokumentasi Finder untuk informasi lebih lanjut ..

masukkan deskripsi gambar di sini

Setelah Anda menambahkan elemen, Anda dapat memilih bidang finder dari daftar, tahan

Tombol Ctrl untuk memilih istilah taksonomi serta Node: Badan

Bala
sumber
Agak lama dan membutuhkan co-pengelola, tetapi sepertinya memenuhi semua kebutuhan saya. Akan perlu mengujinya, tetapi sejauh ini tampaknya menjadi jawaban yang sempurna untuk kasus penggunaan saya.
Mołot
Sepertinya itu berhasil. Saya perlu sedikit menyetelnya, tetapi itu bisa melakukan pekerjaan.
Mołot
3

Saya menulis tanpa pengujian tetapi saya merasa Anda dapat menggunakannya setidaknya sebagai titik awal.

Menggunakan modul Tampilan Bidang Tampilan , Anda bisa menyematkan tampilan ke tampilan lain, dan itu juga memungkinkan Anda meneruskan filter kontekstual ke tampilan tertanam.

Dalam kasus Anda, saya hanya akan membuat tampilan lain yang memiliki filter kontekstual yang mencari filter yang diberikan. Saya tidak yakin tentang hal itu, jika Anda dapat melakukan pencarian melalui filter kontekstual, tetapi saya telah melihat beberapa opsi seperti 'Cari: Istilah' dll.

Karena itu, jika Anda dapat mencapai langkah pertama ini bagaimanapun, sisanya relatif sederhana.

Dalam tampilan asli Anda, Anda menambahkan 'Tidak ada perilaku hasil' di bawah bagian opsi lanjutan, dan menambahkan 'Global: Tampilan (tampilan bidang tampilan)' dan pilih tampilan yang Anda buat sebelumnya, dan berikan token untuk filter yang terbuka sebagai filter kontekstual ke tampilan tertanam (Anda dapat menemukan token dalam daftar untuk pola penggantian).

Елин Й.
sumber
1
Ide yang menarik tetapi saya tidak bisa membuatnya bekerja. Banyak konfigurasi dan kemudian Bala memposting modul yang sudah jadi dan saya kehilangan hati.
Mołot
Ya, saya tidak tahu tentang modul Finder . Saya pikir saya akan menggunakannya dalam proyek saya juga. Saya akan senang jika Anda memberi tahu kami dengan komentar, jika Finder melakukan apa yang Anda harapkan.
Елин Й.
3

Saya telah melalui diskusi di atas dan mungkin skenario di bawah ini dapat membahas postingan 'Bagaimana cara menggabungkan tampilan filter yang terpapar dengan pencarian?'. Implementasi akan memerlukan beberapa pengkodean khusus.

  1. Pertimbangkan url http://www.seedandspark.com/studio .
  2. Di sini, di sebelah kiri, Anda memiliki formulir pencarian. Ini adalah formulir khusus ( form_id = 'sns_studio_form_filter').
  3. Di wilayah konten kami memiliki sekitar 7-8 blok tampilan & semua menghasilkan informasi dinamis (hanya untuk pengguna anonim 3 blok)
  4. Sekarang, kami telah mengaktifkan filter yang diaktifkan dengan setiap blok tampilan.
  5. Kami telah menjaga agar filter yang terbuka tersebut tidak terlihat
  6. Kami telah mencatat struktur url saat kami menggunakan filter tampilan terbuka
  7. Di handler pengiriman formulir kustom kami, kami mengambil informasi dari bidang formulir kustom dan menghasilkan url yang sama seperti yang telah kami catat di langkah 6. Dan, akhirnya kami mengarahkan ke url itu. Ini akan menjadi seperti ini di submit handler ::

    $form_state ['redirect'] = array(
      $path, 
      array(
        'query' => $params // $params is the url
      )
    );
    drupal_redirect_form( $form_state );

Jadi, sekarang setelah langkah 7 dijalankan, semua blok tampilan akan difilter berdasarkan kriteria filter yang telah Anda tetapkan.

Semoga ini bisa membantu.

dhrubaj
sumber
3

Ada juga cara lain untuk melakukannya: Anda bisa mencoba modul Field Concat . Anda pada dasarnya menambahkan bidang ke tipe konten, dan kemudian Anda bisa menggunakan filter berdasarkan bidang ini sebagai pencarian.

Ini sangat mirip dengan Finder, saya setuju, tapi saya pikir masih layak disebut.

32i
sumber