it-swarm-eu.dev

Jak přizpůsobím stránku s výsledky vyhledávání?

Přizpůsobil jsem upoutávku mých typů obsahu a zobrazení stránky. Nyní musím použít stránku upoutávky na stránku s výsledky vyhledávání. Ve výchozím nastavení Drupal zobrazuje plnotextový neuspořádaný nepořádek pro každý výsledek, musím být schopen přizpůsobit vzhled každého z nich podle typu obsahu. Nechci měnit HOW drupal získá výsledky, jak je zobrazuje).

39
J-Fiz

Můžete přepsat téma topic_search_results () nebo theme_search_result ().

První je funkce motivu, která je vyvolána pro stránku s výsledky vyhledávání, zatímco druhá je funkce motivu, která je vyvolána pro vykreslení jediného výsledku. Obě funkce motivu používají soubor šablony ( search-results.tpl.php v prvním případě, search-result.tpl.php v druhém případě).

search-result.tpl.php použije $info_split['type'] in Drupal 6, který obsahuje typ uzlu. V nejnovější verzi Drupal 7 verze, $info_split['type'] již není předáno, ale search-result.tpl.php stále dostane $result['node'], v případě hledání uzlů; $result['node']->type je pak typ obsahu uzlu.

Všimněte si, že Drupal 7 a vyšší) umožňuje modulům implementovat hook_search_page () , ale jedná se o háček používaný modulem, který se integruje s vyhledávacím modulem, ne z modulu, který chce změnit stránku s výsledky pro výsledky vrácené jiným modulem.
Také v Drupal 7) každá funkce motivu používá funkci preprocesu, která by v tomto případě byla hook_preprocess_search_results () a hook_preprocess_search_result () . Jsou užitečné v případě, že potřebujete pouze upravit hodnotu toho, co bylo předáno do souboru šablony.

28
kiamlaluno

V Drupal 7 používáte ...

... pohrávat si s informacemi zobrazenými ve výsledcích.

A používáte ...

... pro přizpůsobení označení výsledků.

Příklad

Toto je příklad, jak použít upoutávku typu obsahu jako výsledek vyhledávání. Další úryvek jde do šablony template.php

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

Tento fragment je soubor 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

Nedávno jsem strávil spoustu času prací s výsledky vyhledávání na Drupal 7 webové stránce architektury) a usadil jsem se pomocí modulu Display Suite .

Modul Display Suite má skvělou metodu pro převzetí kontroly nad výsledky vyhledávání: Umožní vám to snadno používat vaše upoutávky ve výsledcích vyhledávání. Toto je výukový program od správce modulu, který se zaměřuje na jeho použití pro výsledky vyhledávání.

Jako vždy u Drupalu, existuje celá řada způsobů, jak udělat to samé. Tuto metodu se mi líbil, protože mi to umožnilo rozdělit výsledky podle typu obsahu.

9
woop