¿Cómo puedo obtener más de 10 resultados de búsqueda en una página en Drupal 7?

17

Por defecto, la página de búsqueda muestra solo 10 resultados. ¿Cómo puedo cambiarlo para mostrar un número ilimitado de resultados?

mivoligo
fuente
1
Para aquellos interesados ​​en la historia de fondo por la cual esto no es posible actualmente, ver fácilmente: drupal.org/node/33809
coderintherye
Tenía que hacer lo mismo en Drupal 8 y no puedo cambiar el límite de paginación de los resultados de búsqueda. ¿Puedes ayudar en esto?
Naveen Kumar

Respuestas:

15

Recomiendo usar vistas para esto. Las vistas vienen con una vista de búsqueda incluida (deshabilitada por defecto). Utilice un filtro de término de búsqueda expuesto para proporcionar la funcionalidad de búsqueda y personalice otros aspectos de la vista según sea necesario.

beeradb
fuente
Gracias por recomendarme. Parece la forma más fácil, pero en Drupal 7, no veo ninguna vista de búsqueda incluida.
mivoligo
Puede configurar vistas definitivas en una vista que muestre los resultados de búsqueda como core search.module
Daniel Wehner el
11

El límite de 10 elementos generalmente está codificado en hook_search_execute()implementaciones (como node_search_execute()): en teoría, podría implementar hook_search_execute()y cambiar la ->limit(10)consulta a algo diferente 10.

Pero como mencionó beeradb , probablemente sea más fácil usar Vistas para anular los resultados de búsqueda principales.

Comunidad
fuente
4

En Drupal 7, he podido modificar los elementos principales de resultados de búsqueda por página usando hook_query_alter en un módulo personalizado. Se puede usar el siguiente fragmento de código, si está familiarizado con el uso de ganchos en el código:

<?php
/**
 * Implements hook_query_alter
 */
function MY_MODULE_query_alter(&$query) {

  // This is a search result query and we want to change the
  // number of search results per page to 16.
  if ($query instanceof PagerDefault
    && ($tables = $query->getTables())
    && isset($tables['i']['table'])
    && $tables['i']['table'] === 'search_index') {
    $query->limit(16);
  }
}
aklump
fuente
0

No encontré 'vista de búsqueda' en el módulo de vistas. Estoy usando las vistas 7.x-3.7.

Para obtener más de 10 resultados de búsqueda en una página en Drupal 7, he usado el módulo search_config . Usé su última versión '7.x-1.1-beta2'.

Una vez que el módulo está habilitado, puede configurar el límite del buscapersonas desde Configuración-> Búsqueda y metadatos-> Configuración de búsqueda (admin / config / search / settings) en la sección 'CONFIGURACIÓN DE BÚSQUEDA DE NODOS ADICIONALES'. Verá la sección 'Resultados' allí y puede especificar el límite de buscapersonas para mostrar más de 10 resultados de búsqueda en una página.

amitgoyal
fuente
Esto no parece funcionar con Apache Solr.
Jack Ryan
0

La vista de búsqueda predeterminada parece haberse eliminado del módulo Vistas, por lo que aquí hay una que eliminé rápidamente que puede usar como punto de partida para sus propios requisitos. Use el cuadro de diálogo Importar vistas y pegue el código para importarlo.

$view = new view();
$view->name = 'search_test';
$view->description = '';
$view->tag = 'default';
$view->base_table = 'node';
$view->human_name = 'search test';
$view->core = 7;
$view->api_version = '3.0';
$view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */

/* Display: Master */
$handler = $view->new_display('default', 'Master', 'default');
$handler->display->display_options['title'] = 'search test';
$handler->display->display_options['use_more_always'] = FALSE;
$handler->display->display_options['access']['type'] = 'perm';
$handler->display->display_options['cache']['type'] = 'none';
$handler->display->display_options['query']['type'] = 'views_query';
$handler->display->display_options['exposed_form']['type'] = 'input_required';
$handler->display->display_options['exposed_form']['options']['text_input_required'] = 'Enter some search keywords.';
$handler->display->display_options['exposed_form']['options']['text_input_required_format'] = 'filtered_html';
$handler->display->display_options['pager']['type'] = 'full';
$handler->display->display_options['pager']['options']['items_per_page'] = '20';
$handler->display->display_options['style_plugin'] = 'default';
$handler->display->display_options['row_plugin'] = 'fields';
/* No results behavior: Global: Text area */
$handler->display->display_options['empty']['area']['id'] = 'area';
$handler->display->display_options['empty']['area']['table'] = 'views';
$handler->display->display_options['empty']['area']['field'] = 'area';
$handler->display->display_options['empty']['area']['empty'] = TRUE;
$handler->display->display_options['empty']['area']['content'] = 'No results found.';
$handler->display->display_options['empty']['area']['format'] = 'filtered_html';
/* Field: Content: Title */
$handler->display->display_options['fields']['title']['id'] = 'title';
$handler->display->display_options['fields']['title']['table'] = 'node';
$handler->display->display_options['fields']['title']['field'] = 'title';
$handler->display->display_options['fields']['title']['label'] = '';
$handler->display->display_options['fields']['title']['alter']['word_boundary'] = FALSE;
$handler->display->display_options['fields']['title']['alter']['ellipsis'] = FALSE;
/* Filter criterion: Content: Published */
$handler->display->display_options['filters']['status']['id'] = 'status';
$handler->display->display_options['filters']['status']['table'] = 'node';
$handler->display->display_options['filters']['status']['field'] = 'status';
$handler->display->display_options['filters']['status']['value'] = 1;
$handler->display->display_options['filters']['status']['group'] = 1;
$handler->display->display_options['filters']['status']['expose']['operator'] = FALSE;
/* Filter criterion: Search: Search Terms */
$handler->display->display_options['filters']['keys']['id'] = 'keys';
$handler->display->display_options['filters']['keys']['table'] = 'search_index';
$handler->display->display_options['filters']['keys']['field'] = 'keys';
$handler->display->display_options['filters']['keys']['operator'] = 'required';
$handler->display->display_options['filters']['keys']['exposed'] = TRUE;
$handler->display->display_options['filters']['keys']['expose']['operator_id'] = 'keys_op';
$handler->display->display_options['filters']['keys']['expose']['label'] = 'Search Terms';
$handler->display->display_options['filters']['keys']['expose']['operator'] = 'keys_op';
$handler->display->display_options['filters']['keys']['expose']['identifier'] = 'keys';

/* Display: Page */
$handler = $view->new_display('page', 'Page', 'page');
$handler->display->display_options['path'] = 'search';
Alfred Armstrong
fuente
-2

También puede usar el módulo de límite de búsqueda o el siguiente código en template.php

if(arg(0) == "search" && arg(1) == "site") {

$variables['quantity'] = 5; 

}
Naresh
fuente