it-swarm-id.com

Bagaimana cara menyesuaikan halaman hasil pencarian?

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 berantakan teks campur aduk untuk setiap hasil, saya harus dapat menyesuaikan tampilan masing-masing per jenis konten. Saya tidak ingin mengubah BAGAIMANA CARA drupal mendapat hasilnya, hanya bagaimana menampilkannya.

39
J-Fiz

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 menggunakan $info_split['type'] dalam Drupal 6, yang berisi jenis simpul. Dalam versi terbaru Drupal 7, $info_split['type'] tidak lagi lulus, tetapi search-result.tpl.php masih mendapatkan $result['node'], dalam hal pencarian dilakukan untuk node; $result['node']->type adalah tipe konten dari node.

Untuk memperhatikan bahwa Drupal 7, dan 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 modul lain.
Juga, pada Drupal 7, setiap fungsi tema menggunakan fungsi preproses, yang dalam hal ini adalah hook_preprocess_search_results () dan hook_preprocess_search_result () . Mereka sangat membantu jika Anda hanya perlu mengedit nilai dari apa yang diteruskan ke file templat.

28
kiamlaluno

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>
18
batigolix

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

Modul Display Suite memiliki metode yang luar biasa untuk mengendalikan hasil pencarian: Modul ini memungkinkan Anda untuk menggunakan penggoda 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.

9
woop