Bagaimana cara mengarahkan kueri filter terbuka ke halaman hasil tampilan yang hidup di halaman panel lain?


8

Setup saya: Drupal 7.2, Panel 7.x-3.0-alpha3, Views 7.x-3.0-beta3, Chaos tool suite 7.x-1.0-beta1

Katakanlah saya ingin membuat situs web direktori buah. Dalam pandangan saya memiliki panel konten "buah-buahan" dengan filter terbuka berdasarkan taksonomi "warna". Situs web seharusnya memiliki dua halaman panel. Halaman panel pertama hanya menampilkan kotak filter terbuka "cari buah" dengan dropdown untuk "warna" dan tombol pencarian. Setelah memilih dari dropdown dan mengklik tombol pencarian, pengguna diharapkan diarahkan ke halaman panel kedua yang mencakup panel konten tampilan yang menampilkan daftar buah-buahan yang cocok dengan filter (warna).

Masalahnya adalah: kotak filter terbuka di halaman pertama tidak akan mengarahkan ulang ke halaman hasil setelah mengklik tombol apply. Bagaimana cara mengatur tampilan dan panel untuk mencapai ini?

Jawaban:


7
function hook_form_alter(&$form, &$form_state, $form_id) {  
  if ($form_id=='views_exposed_form') {
    global $base_url;
    $form['#action'] = $base_url.'/path_that_you_want'; 
  }
}

Ini berfungsi dengan baik, tetapi alih-alih menggunakan $ base_url, saya pikir Anda mungkin harus menggunakan url('path_that_you_want').
John Fiala

1
Saya mencoba ini tanpa hasil. Sebenarnya atribut 'tindakan' saya mengatakan tujuan lain. Bagaimana saya bisa memperbaikinya?
sokratis

Hai, di mana saya menambahkan kode ini, beri tahu saya Terima kasih
Bereaksi Pengembang

0

Saya tidak yakin apakah ada cara "benar" tetapi saya telah membuat ini terjadi dengan menulis hook_form_alter untuk formulir filter yang terbuka untuk mengubah tujuan.

Tidak ideal, tetapi saya mendapatkan hasil yang saya butuhkan.


Bagaimana kamu melakukan ini? Bisakah Anda memposting kode Anda?
Michiel

0

Solusi paling sederhana adalah dengan

  • Buat halaman tampilan
  • Buat tampilan terbuka
  • Di bawah Advanced> formulir yang terbuka. Setel "form terbuka di blokir: Ya"
  • Tambahkan blokir "Formulir terbuka: ..." ke halaman depan yang diperlukan.

0

Solusi paling sederhana adalah dengan Membuat halaman tampilan Buat tampilan terbuka Di bawah Advanced> formulir terbuka. Set "form terbuka di blok: Ya" Tambahkan blok "Form terbuka: ..." ke halaman depan yang diperlukan.

Formual di atas Interlated membuat saya setengah jalan dengan blok filter terbuka berfungsi untuk membuka dan menampilkan hasil pada halaman baru.

Namun, saya juga perlu blok filter berada di halaman hasil itu. Jadi saya lampirkan formulir (blok filter terbuka) melalui area tampilan di header. Kemudian saya menemukan perilaku rekursif ketika keduanya ditampilkan dalam tampilan yang sama.

Untuk menyelesaikannya, saya memisahkan dua tampilan (halaman & blok) menjadi tampilan masing-masing - membuat satu blok sebagai filter terbuka yang menyertakan bidang untuk hasil, kemudian tampilan yang sama sekali baru untuk halaman yang memiliki URL untuk dijangkau. Tampilan halaman memiliki satu bidang (judul) yang ditimpa sebagai spasi putih (terutama karena hasilnya akan berlebihan tetapi juga tidak akurat - saya menemukan hasil yang ditampilkan secara akurat dari bidang dalam blok filter terbuka). Saya menyimpan pengaturan yang difilter yang sama antara kedua layar dan menggunakan filter yang lebih baik menggunakan ajax pada kedua layar.

Saya melakukan ini di D8 tetapi kemungkinan akan sama pada 7.

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.