Arama sonucu sayfasını nasıl özelleştirebilirim?


39

İçerik türlerimin ve sayfa görünümünün teaser görünümünü özelleştirdim. Şimdi arama sonuçları sayfası için teaser görünümünü kullanmam gerekiyor. Varsayılan olarak, Drupal, her sonuç için karışık bir karışıklık görüntüler, her içerik türü için her birinin görünümünü özelleştirebilmem gerekiyor. NASIL drupal sonuçları almak istemiyor, tam olarak gösterdiği gibi.

Yanıtlar:


28

Theme_search_results () veya theme_search_result () öğesini geçersiz kılabilirsiniz.

Birincisi, arama sonucu sayfası için çağrılan tema işlevi, ikincisi ise, tek bir sonuç elde etmek için çağrılan tema işlevidir. Her iki tema işlevi de bir şablon dosyası kullanır ( ilk durumda search-results.tpl.php , ikinci durumda search-result.tpl.php ).

search-result.tpl.php $info_split['type'], düğüm türünü içeren Drupal 6'da kullanır . En son Drupal 7 sürümünde, $info_split['type']artık geçilmez, ancak search-result.tpl.php $result['node'], arama düğümleri için yapıldığı halde hala alır ; $result['node']->typeo zaman düğümün içerik türüdür.

Drupal 7 ve daha üstü sürümlerin modüllerin hook_search_page () uygulamasına izin verdiğini fark etmek , ancak başka bir sonuç tarafından döndürülen sonuçlar için sonuç sayfasını değiştirmek isteyen bir modülden değil, Arama modülüyle bütünleşen bir modül tarafından kullanılan bir kancadır. modülü.
Ayrıca Drupal 7'de, her tema işlevi, bu durumda hook_preprocess_search_results () ve hook_preprocess_search_result () olacak bir ön işleme işlevi kullanır . Şablon dosyasına ne geçtiğinin değerini düzenlemeniz gerekebilir.


Görünümleri veya panelleri kullanarak arama sonuçlarının temasının bir yolu var mı?
Ocak

@ jan Açık filtreleri kullanarak arama sayfasını görünümle değiştirebilirsiniz.
kiamlaluno

@kiamlaluno, görünümleri kullanarak drupal için varsayılan arama seçeneğini belirleyebileceğimi umuyordum. Çünkü maruz kalan filtreleri kullanmayacağım ve sadece varsayılan arama seçeneğini kullanmalıyım.
Ocak

@ jan Bir görünüm kullanıyorsanız, arama sayfasının tamamı görünümle değiştirilir. Bu yüzden en azından bir görünüm filtresi göstermeniz gerekiyor: Kullanıcıların arama terimlerini girmek için kullanacağı şey budur. Görünüm yalnızca bir düğüm listesidir ve sayfada gösterilecek olan düğümleri filtrelemek için filtreler kullanılır.
kiamlaluno

@kiamlaluno haklısın. Neden bunun hakkında düşünmedim! Thanks
jan

18

Drupal 7’de ...

... sonuçlarda görüntülenen bilgileri incelemek için.

Ve sen ...

... sonuçların biçimlendirmesini özelleştirmek için.

Örnek

Bu, içerik türünün teaserının arama sonucu olarak nasıl kullanılacağına bir örnektir. Bir sonraki kod parçası, temanın template.php'sine giriyor

/**
 * 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'); 
  }
}

Bu kod parçası search-result.tpl.php dosyasıdır:

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

1
Bu konuyla ilgili en iyi açıklama.
digitgopher

9

Geçenlerde bir Drupal 7 mimarisinin web sitesinde arama sonuçlarıyla çalışarak çok zaman harcadım ve Display Suite modülünü kullanmaya karar verdim .

Display Suite modülünde arama sonuçlarının kontrolünü almak için harika bir yöntem vardır: Teaser'larınızı arama sonuçlarında kolayca kullanmanıza olanak sağlar. Bu, modülün sahibi tarafından arama sonuçları için kullanılmaya odaklanan bir öğreticidir .

Her zaman olduğu gibi Drupal ile aynı şeyi yapmanın çeşitli yolları vardır. Bu yöntemi sevdim çünkü sonuçları içerik türüne göre ayırmama izin verdi.


1
Bu cevabın 2012'den geldiğini biliyorum, ancak modül sayfasında arama işlevinin artık Drupal 8'de hariç tutulduğunu belirttiğine dikkat ediyorum . Bu, Drupal 7 için benimsenmesi gereken en iyi şey olamayacağına işaret ediyor. . Bu tek başıma, kendim tarafından test edilmedi.
ja_him
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.