Bagaimana cara menyesuaikan halaman hasil pencarian?

39

Saya telah menyesuaikan tampilan teaser dari tipe konten saya dan tampilan halaman. Sekarang saya perlu menggunakan tampilan penggoda untuk halaman hasil pencarian. Secara default, Drupal menampilkan kekacauan teks yang campur aduk untuk setiap hasil, saya harus dapat menyesuaikan tampilan masing-masing per jenis konten. Saya tidak ingin mengubah BAGAIMANA drupal mendapatkan hasilnya, hanya bagaimana menampilkannya.

J-Fiz
sumber

Jawaban:

28

Anda dapat mengganti theme_search_result (), atau theme_search_result ().

Yang pertama adalah fungsi tema yang dipanggil untuk halaman hasil pencarian, sedangkan yang kedua adalah fungsi tema yang dipanggil untuk membuat hasil tunggal. Kedua fungsi tema menggunakan file templat ( search-results.tpl.php dalam kasus pertama, search-result.tpl.php dalam kasus kedua).

search-result.tpl.php akan digunakan $info_split['type']dalam Drupal 6, yang berisi tipe node. Dalam versi Drupal 7 terbaru, $info_split['type']tidak lagi disahkan, tetapi search-result.tpl.php masih mendapatkan $result['node'], dalam hal pencarian dilakukan untuk node; $result['node']->typekemudian tipe konten dari node.

Untuk memperhatikan bahwa Drupal 7, dan yang lebih tinggi, memungkinkan modul untuk mengimplementasikan hook_search_page () , tetapi itu adalah pengait yang digunakan oleh modul yang terintegrasi dengan modul Pencarian, bukan dari modul yang ingin mengubah halaman hasil untuk hasil yang dikembalikan oleh orang lain modul.
Juga, pada Drupal 7, setiap fungsi tema menggunakan fungsi preprocess, yang dalam hal ini adalah hook_preprocess_search_result () dan hook_preprocess_search_result () . Mereka sangat membantu jika Anda hanya perlu mengedit nilai dari apa yang diteruskan ke file templat.

kiamlaluno
sumber
Apakah ada cara untuk tema hasil pencarian menggunakan tampilan atau panel?
Januari
@jan Anda dapat mengganti halaman pencarian dengan tampilan menggunakan filter terbuka.
kiamlaluno
@kiamlaluno, saya berharap bisa tema opsi pencarian default untuk drupal menggunakan pandangan. Karena saya tidak akan menggunakan filter yang terbuka dan hanya menggunakan opsi pencarian default.
Januari
@jan Jika Anda menggunakan tampilan, seluruh halaman pencarian digantikan oleh tampilan. Itulah sebabnya Anda perlu mengekspos setidaknya filter tampilan: Itulah yang akan digunakan pengguna untuk memasukkan istilah pencarian. Tampilan hanyalah daftar node, dan filter digunakan untuk memfilter node yang akan ditampilkan di halaman.
kiamlaluno
@kiamlaluno kamu benar. Kenapa aku tidak memikirkannya !! Terima kasih
Januari
18

Di Drupal 7 Anda menggunakan ...

... untuk mengotak-atik informasi yang ditampilkan dalam hasil.

Dan Anda menggunakan ...

... untuk menyesuaikan markup hasil.

Contoh

Ini adalah contoh cara menggunakan penggoda tipe konten sebagai hasil pencarian. Cuplikan berikutnya ditampilkan di template.php tema

/**
 * Implements template_preprocess_search_result
 * @param type $vars
 */
function MYTHEME_preprocess_search_result(&$vars) {
  $node = $vars['result']['node'];
  if ($node->nid) { // if the result is a node we can load the teaser
    $vars['teaser'] = node_view($node, 'teaser'); 
  }
}

Cuplikan ini adalah file search-result.tpl.php:

<article>
  <?php if ($teaser) : // for nodes we can use the teaser as search result ?>
    <?php print drupal_render($teaser); ?>
  <?php else : // for other results we use the default from core search module ?>  
    <?php print render($title_prefix); ?>
    <h3><a href="<?php print $url; ?>"><?php print $title; ?></a></h3>
    <?php print render($title_suffix); ?>
    <?php if ($snippet) : ?>
      <p><?php print $snippet; ?></p>
    <?php endif; ?>
  <?php endif; ?>
  <?php if ($info): ?>
    <footer><?php print $info; ?></footer>
  <?php endif; ?>
</article>
batigolix
sumber
1
Penjelasan terbaik di utas ini.
digitgopher
9

Saya baru-baru ini menghabiskan banyak waktu bekerja dengan hasil pencarian di situs web arsitektur Drupal 7, dan memutuskan untuk menggunakan modul Display Suite .

Modul Display Suite memiliki metode yang luar biasa untuk mengendalikan hasil pencarian: Ini akan memungkinkan Anda untuk menggunakan penggoda Anda dengan mudah dalam hasil pencarian. Ini adalah tutorial oleh pengelola modul yang berfokus menggunakannya untuk hasil pencarian.

Seperti biasa dengan Drupal, ada berbagai cara untuk melakukan hal yang sama. Saya menyukai metode ini karena memungkinkan saya untuk membagi hasil berdasarkan tipe konten.

celetuk
sumber
1
Saya tahu jawaban ini dari 2012, tetapi saya perhatikan bahwa pada halaman modul dikatakan fungsi pencarian sekarang dikecualikan dalam Drupal 8. Yang menyarankan ini mungkin bukan hal terbaik untuk diadopsi untuk Drupal 7, dengan asumsi Anda menginginkan semacam pemeriksaan di masa depan. . Itu tidak diuji sendiri, hanya kepala.
ja_him