Wie passe ich die Suchergebnisseite an?

39

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 Erscheinungsbild für jeden Inhaltstyp individuell anzupassen. Ich möchte nicht ändern, wie Drupal die Ergebnisse erhält, nur wie sie angezeigt werden.

J-Fiz
quelle

Antworten:

28

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 zum Rendern eines einzelnen Ergebnisses aufgerufen wird. Beide Theme-Funktionen 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 verwendet, das den Knotentyp enthält. In der neuesten Drupal 7-Version $info_split['type']ist es nicht mehr bestanden, aber search-result.tpl.php erhält es immer noch $result['node'], falls die Suche nach Knoten durchgeführt wird. $result['node']->typeist dann der Inhaltstyp des Knotens.

Zu bemerken, 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, und nicht von einem Modul, das die Ergebnisseite für von einem anderen zurückgegebene Ergebnisse ändern möchte Modul.
Unter Drupal 7 verwendet jede Designfunktion eine Vorverarbeitungsfunktion, in diesem Fall hook_preprocess_search_results () und hook_preprocess_search_result () . Sie sind hilfreich, wenn Sie nur den Wert dessen bearbeiten müssen, was an die Vorlagendatei übergeben wurde.

kiamlaluno
quelle
Gibt es eine Möglichkeit, Suchergebnisse mithilfe von Ansichten oder Bedienfeldern zu thematisieren?
Januar
@jan Sie können die Suchseite durch eine Ansicht ersetzen, indem Sie sichtbare Filter verwenden.
kiamlaluno
@kiamlaluno, ich hatte gehofft, ich kann die Standardsuchoption für Drupal mithilfe von Ansichten thematisieren. Weil ich die exponierten Filter nicht verwende und nur die Standardsuchoption verwende.
Januar
@jan Wenn Sie eine Ansicht verwenden, wird die gesamte Suchseite durch die Ansicht ersetzt. Aus diesem Grund müssen Sie mindestens einen Ansichtsfilter verfügbar machen: Mit diesem Filter geben die Benutzer die Suchbegriffe ein. Eine Ansicht ist nur eine Liste von Knoten. Mit Filtern werden die Knoten gefiltert, die auf der Seite angezeigt werden.
kiamlaluno
@ kiamlaluno du hast recht. Warum habe ich nicht darüber nachgedacht !! Dank
Januar
18

In Drupal 7 verwenden Sie ...

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

Und Sie verwenden ...

... 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 ist in der template.php des Themas enthalten

/**
 * 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>
Batigolix
quelle
1
Beste Erklärung zu diesem Thread.
Digitgopher
9

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

Das Display Suite-Modul bietet eine hervorragende Methode, um die Kontrolle über Suchergebnisse zu übernehmen: Sie können Ihre Teaser ganz einfach in Suchergebnissen verwenden. Dies ist ein Tutorial des Betreuers des Moduls, das sich auf die Verwendung für Suchergebnisse konzentriert.

Wie immer bei Drupal gibt es verschiedene Möglichkeiten, dasselbe zu tun. Ich mochte diese Methode, weil ich die Ergebnisse nach Inhaltstyp aufteilen konnte.

woop
quelle
1
Ich weiß, dass diese Antwort aus dem Jahr 2012 stammt, aber ich stelle fest, dass auf der Modulseite die Suchfunktion in Drupal 8 jetzt ausgeschlossen ist. Dies lässt vermuten, dass dies nicht die beste Wahl für Drupal 7 ist, vorausgesetzt, Sie möchten eine Art Zukunftssicherung . Das ist aber nicht von mir selbst getestet, nur ein Kopf hoch.
ja_him