web-gelistirme-sc.com

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

İçerik türlerimin teaser görünümünü ve sayfa 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 tam bir metin karmaşa görüntüler, her içerik türü için her birinin görünümünü özelleştirmek gerekir. NASIL değiştirmek istemiyorum drupal sonuçları, tam olarak nasıl görüntülediğini alır.

39
J-Fiz

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

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

search-sonuç.tpl.php, düğüm türünü içeren Drupal 6 içinde $info_split['type'] kullanır. En son Drupal 7 sürümünde, $info_split['type'] Artık geçilmedi, ancak arama-sonuç.tpl.php hala $result['node'] Alır, arama düğümler için yapılırsa; $result['node']->type düğüm.

Drupal 7 ve üstü, modüllerin hook_search_page () uygulamasına izin verdiğini, ancak Arama modülüyle entegre olan bir modül tarafından kullanılan bir kanca olduğunu, başka bir modül tarafından döndürülen sonuçlar için sonuç sayfasını değiştirmek isteyen bir modülden değil.
Ayrıca, Drupal 7, her tema işlevi, bu durumda hook_preprocess_search_results () ve hook_preprocess_search_result) olacak bir önişleme işlevi kullanır. () . Sadece şablon dosyasına iletilenlerin değerini düzenlemeniz gerektiğinde yardımcı olurlar.

28
kiamlaluno

Drupal 7 kullanıyorsunuz ...

... sonuçlarda görüntülenen bilgilerle uğraşmak.

Ve sen kullan ...

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

Misal

Bu, içerik türünün fragmanını arama sonucu olarak nasıl kullanacağınıza bir örnektir. Bir sonraki snippet, temanın template.php dosyasına 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 snippet, search-results.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>
18
batigolix

Geçenlerde bir Drupal 7 mimari web sitesinde arama sonuçları ile çalışmak için çok zaman geçirdim ve Display Suite modülünü kullanmaya karar verdim.

Display Suite modülünün arama sonuçlarının kontrolünü ele geçirmek için harika bir yöntemi vardır: Tanıtım sonuçlarınızı arama sonuçlarında kolayca kullanmanızı sağlar. Bu bir öğreticidir modülü arama sonuçları için kullanmaya odaklanan modülün koruyucusu tarafından.

Drupal'da her zaman olduğu gibi, aynı şeyi yapmanın çeşitli yolları vardır. Sonuçları içerik türüne göre ayırmama izin verdiği için bu yöntemi beğendim.

9
woop