it-swarm.com.de

Wie passe ich die Suchergebnisseite an?

Ich habe die Teaser-Ansicht meiner Inhaltstypen und die Seitenansicht angepasst. Jetzt muss ich die Teaser-Ansicht für die Suchergebnisseite verwenden. Standardmäßig zeigt Drupal für jedes Ergebnis ein durcheinandergebrachtes Volltext-Durcheinander an. Ich muss in der Lage sein, das Aussehen jedes einzelnen pro Inhaltstyp anzupassen. Ich möchte nicht ändern, wie drupal die Ergebnisse erhält, nur wie sie angezeigt werden.

39
J-Fiz

Sie können theme_search_results () oder theme_search_result () überschreiben.

Die erste ist die Themenfunktion, die für die Suchergebnisseite aufgerufen wird, während die zweite die Themenfunktion ist, die aufgerufen wird, um ein einzelnes Ergebnis zu rendern. Beide Designfunktionen verwenden eine Vorlagendatei ( search-results.tpl.php im ersten Fall, search-result.tpl.php im zweiten Fall).

search-result.tpl.php würde $info_split['type'] in Drupal 6, das den Knotentyp enthält) verwenden. In der neuesten Version Drupal 7 Version, $info_split['type'] Wird nicht mehr übergeben, aber search-result.tpl.php erhält immer noch $result['node'], Falls die Suche nach Knoten durchgeführt wird; $result['node']->type Ist dann der Inhaltstyp von der Knoten.

Um festzustellen, dass Drupal 7 und höher) es den Modulen ermöglicht, hook_search_page () zu implementieren, aber es ist ein Hook, der von einem Modul verwendet wird, das in das Suchmodul integriert ist. nicht von einem Modul, das die Ergebnisseite für Ergebnisse ändern möchte, die von einem anderen Modul zurückgegeben werden.
Außerdem verwendet jede Themenfunktion unter Drupal 7) eine Vorverarbeitungsfunktion, die in diesem Fall hook_preprocess_search_results () und hook_preprocess_search_result wäre () . Sie sind hilfreich, wenn Sie nur den Wert dessen bearbeiten müssen, was an die Vorlagendatei übergeben wurde.

28
kiamlaluno

In Drupal 7 verwenden Sie ...

... um an den in den Ergebnissen angezeigten Informationen zu basteln.

Und du benutzt ...

... um das Markup der Ergebnisse anzupassen.

Beispiel

Dies ist ein Beispiel für die Verwendung des Teasers des Inhaltstyps als Suchergebnis. Das nächste Snippet befindet sich in der template.php des Themas

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

Dieses Snippet ist die Datei 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

Ich habe kürzlich viel Zeit damit verbracht, mit Suchergebnissen auf einer Drupal 7 Architektur-Website) zu arbeiten, und mich für die Verwendung des Moduls Display Suite entschieden.

Das Display Suite-Modul bietet eine wunderbare Methode, um die Kontrolle über Suchergebnisse zu übernehmen: Sie können Ihre Teaser problemlos in Suchergebnissen verwenden. Dies ist ein Tutorial vom Betreuer des Moduls, das sich darauf konzentriert, es für Suchergebnisse zu verwenden.

Wie immer bei Drupal gibt es verschiedene Möglichkeiten, dasselbe zu tun. Diese Methode hat mir gefallen, weil ich die Ergebnisse nach Inhaltstypen aufteilen konnte.

9
woop