Controlar el motor de búsqueda interno de Drupal

  • 25 Mayo 2015
  • Drupal 7

Escenario

Un sitio tipo blog o corporativo donde se tiene más de un tipo de contenido y se utiliza el módulo search de Drupal para las búsquedas al interno del sitio.

Objetivos

  1. Modificar el aspecto y los elementos de los resultados de una búsqueda
  2. Limitar la búsqueda por tipo de contenido

Ingredientes

Modificar la vista en los resultados de una búsqueda

Para llevar a cabo el primer punto, será necesario instalar los siguientes módulos

  • Display Suite
  • Display Suite Search
  • Display Suite UI
  • Custom Formatters

Si se está trabajando con un subtheme de Bootstrap podría ser interesante intalar también el módulo Display Suite Bootstrap Layouts para habilitar layouts extra compatibles con el framework de Twitter.

Configurar el módulo search en admin/config/search/settings y activar el módulo Display Suite Search y seleccionarlo como default.

Drupal - Display Suite Search

Crear un formato personalizado

Antes de comenzar a personalizar la vista, será necesario crear un formato personalizado que más adelante será aplicado al cuerpo (body) del contenido. Ir a admin/structure/formatters y hacer click en add.

Seleccionar text_with_summary en field type y PHP en el formato.

Drupal - Custom Formatters

Insertar el siguiente código PHP y guardar

$args = arg();
if ($args[0] == 'search') {
  $keys = $args[2];
} else {
  $keys = "";
}
$text = search_excerpt($keys, $variables['#object']->body['und'][0]['value']);
return $text;

Crear una vista personalizada

Gestionar la presentación del tipo de contenido que se desea modificar en los resultados de un búsqueda (en este caso: article) yendo a admin/structure/types/manage/article/display

En la opción custom display settings seleccionar el modo Search result highlighting input para poder personalizarlo más adelante.

Drupal - Custom display settings

Ahora, seleccionar la vista en la parte superior derecha de la página y luego, seleccionar un layout. En este caso: Bootstrap One Column: 12.

Drupal - Search result highlighting input

Drupal - Display Suite y Bootstrap

Finalmente, seleccionar los campos con los formatos del modo que se desee.

Por ejemplo, el título puede presentarse como link o no. Para el cuerpo del contenido, seleccionar el formato creado anteriormente para imitar el modo predefinido en el que viene presentado el cuerpo.

Limitar los resultados por tipo de contenido

Instalar los siguientes módulos

  • Search API
  • Database search (search_api_db)

Podría decirse que con Search API se toma el control del motor de búsqueda de Drupal. El módulo database search es el apoyo que daremos a Search API. Tal vez su ventaja más importante sea la flexibilidad. Es un módulo muy simple de configurar ya que no tiene casi nada para configurar. Si se necesitan más opciones sería mejor utilizar el módulo Apache Solr Search que en este artículo no vamos a hablar de él.

La configuración de Search API es relativamente simple. Es necesario crear un server y un index. Del primer punto se ocupará Database Search y del segundo Search API.

Search server

  • Server name: Database server
  • Minimum word length: 3

Seach index

  • Index name: Default node index
  • Enabled: Sí
  • Server: Database server
  • Index items immediately: Sí

Una vez creado el index será disponible la opción Bundle filter en la sección filters.