¿Cómo personalizo la página de resultados de búsqueda?

39

He personalizado la vista teaser de mis tipos de contenido y la vista de la página. Ahora necesito usar la vista teaser para la página de resultados de búsqueda. Por defecto, Drupal muestra un desorden de texto completo para cada resultado, necesito poder personalizar el aspecto de cada uno por tipo de contenido. No quiero cambiar CÓMO drupal obtiene los resultados, solo cómo los muestra.

J-Fiz
fuente

Respuestas:

28

Puede anular theme_search_results () o theme_search_result ().

La primera es la función de tema que se invoca para la página de resultados de búsqueda, mientras que la segunda es la función de tema que se invoca para generar un único resultado. Ambas funciones del tema utilizan un archivo de plantilla ( search-results.tpl.php en el primer caso, search-result.tpl.php en el segundo caso).

search-result.tpl.php usaría $info_split['type']en Drupal 6, que contiene el tipo de nodo. En la última versión de Drupal 7, $info_split['type']ya no se pasa, pero todavía se obtiene search-result.tpl.php $result['node'], en el caso de que se realice la búsqueda de nodos; $result['node']->typees entonces el tipo de contenido del nodo.

Para darse cuenta de que Drupal 7, y superior, permite que los módulos implementen hook_search_page () , pero es un gancho utilizado por un módulo que se integra con el módulo de Búsqueda, no desde un módulo que quiere cambiar la página de resultados por los resultados devueltos por otro módulo.
Además, en Drupal 7, cada función de tema utiliza una función de preproceso, que en este caso sería hook_preprocess_search_results () y hook_preprocess_search_result () . Son útiles en el caso de que solo necesite editar el valor de lo que pasó al archivo de plantilla.

kiamlaluno
fuente
¿Hay alguna forma de tema de resultados de búsqueda usando vistas o paneles?
enero
@jan Puede reemplazar la página de búsqueda con una vista utilizando filtros expuestos.
kiamlaluno
@kiamlaluno, esperaba poder crear el tema de la opción de búsqueda predeterminada para drupal usando vistas. Porque no usaré los filtros expuestos y solo usaré la opción de búsqueda predeterminada.
enero
@jan Si usa una vista, toda la página de búsqueda se reemplaza por la vista. Es por eso que necesita exponer al menos un filtro de vista: es lo que los usuarios usarán para ingresar los términos de búsqueda. Una vista es solo una lista de nodos, y los filtros se utilizan para filtrar los nodos que se mostrarán en la página.
kiamlaluno
@kiamlaluno tienes razón. ¡Por qué no lo pensé! Gracias
enero
18

En Drupal 7 usas ...

... para jugar con la información que se muestra en los resultados.

Y usas ...

... para personalizar el marcado de los resultados.

Ejemplo

Este es un ejemplo de cómo utilizar el avance del tipo de contenido como resultado de búsqueda. El siguiente fragmento va en la plantilla del tema.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'); 
  }
}

Este fragmento es el archivo 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
fuente
1
La mejor explicación en este hilo.
digitgopher
9

Recientemente pasé mucho tiempo trabajando con los resultados de búsqueda en un sitio web de arquitectura Drupal 7, y decidí usar el módulo Display Suite .

El módulo Display Suite tiene un método maravilloso para tomar el control de los resultados de búsqueda: le permitirá usar fácilmente sus avances en los resultados de búsqueda. Este es un tutorial del encargado del mantenimiento del módulo que se enfoca en usarlo para los resultados de búsqueda.

Como siempre con Drupal, hay una variedad de formas de hacer lo mismo. Me gustó este método porque me permitió desglosar los resultados por tipo de contenido.

woop
fuente
1
Sé que esta respuesta es de 2012, pero noto que en la página del módulo dice que la funcionalidad de búsqueda ahora está excluida en Drupal 8. Lo que sugiere que esto podría no ser lo mejor para adoptar para Drupal 7, suponiendo que desee algún tipo de prueba futura . Sin embargo, eso no lo he probado yo solo, solo un aviso.
ja_him