Come posso ottenere più di 10 risultati di ricerca su una pagina in Drupal 7?


17

Per impostazione predefinita, la pagina di ricerca mostra solo 10 risultati. Come posso cambiarlo per visualizzare un numero illimitato di risultati?


1
Per coloro che sono interessati alla storia
passata

Avevo bisogno di fare lo stesso in Drupal 8 e non sono in grado di modificare il limite di impaginazione dei risultati di ricerca. puoi aiutarmi su questo?
Naveen Kumar,

Risposte:


15

Consiglio di usare le viste per questo. Le viste includono una vista di ricerca inclusa (disabilitata per impostazione predefinita). Utilizzare un filtro dei termini di ricerca esposto per fornire la funzionalità di ricerca e personalizzare altri aspetti della vista in base alle esigenze.


Grazie per la raccomandazione Sembra il modo più semplice, ma in Drupal 7 non vedo alcuna vista di ricerca inclusa.
mivoligo

È possibile configurare in modo definitivo le viste in una vista in cui vengono visualizzati i risultati della ricerca come core search.module
Daniel Wehner,

11

Il limite di 10 elementi è generalmente codificato nelle hook_search_execute()implementazioni (comenode_search_execute() ): in teoria, è possibile implementare hook_search_execute()e modificare la ->limit(10)query in qualcosa di diverso 10.

Ma come menzionato da beeradb , è probabilmente più semplice utilizzare Views per ignorare i risultati di ricerca principali.



4

In Drupal 7, sono stato in grado di modificare gli elementi dei risultati di ricerca principali per pagina utilizzando hook_query_alter in un modulo personalizzato. È possibile utilizzare il seguente frammento di codice, se si ha familiarità con l'uso di hook nel codice:

<?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);
  }
}

0

Non ho trovato la "vista di ricerca" nel modulo viste. Sto usando le visualizzazioni 7.x-3.7.

Per ottenere più di 10 risultati di ricerca su una pagina in Drupal 7, ho usato search_config modulo . Ho usato l'ultima versione '7.x-1.1-beta2'.

Una volta abilitato il modulo, è possibile configurare il limite del cercapersone da Configurazione-> Cerca e metadati-> Cerca impostazioni (admin / config / search / settings) nella sezione 'CONFIGURAZIONE RICERCA DI NODO AGGIUNTIVO'. Lì vedrai la sezione 'Risultati' e puoi specificare il limite del cercapersone per mostrare più di 10 risultati di ricerca su una pagina.


Questo non sembra funzionare con Apache Solr.
Jack Ryan,

0

La vista di ricerca predefinita sembra essere stata rimossa dal modulo Viste, quindi eccone una che ho messo a punto rapidamente che puoi usare come punto di partenza per le tue esigenze. Utilizzare la finestra di dialogo di importazione Viste e incollare il codice per 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';

-2

Puoi anche usare il modulo limite di ricerca o utilizzare il seguente codice in template.php

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

$variables['quantity'] = 5; 

}
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.