Domyślnie strona wyszukiwania pokazuje tylko 10 wyników. Jak mogę go zmienić, aby wyświetlał nieograniczoną liczbę wyników?
Domyślnie strona wyszukiwania pokazuje tylko 10 wyników. Jak mogę go zmienić, aby wyświetlał nieograniczoną liczbę wyników?
Odpowiedzi:
Zalecam używanie do tego widoków. Widoki zawierają dołączony widok wyszukiwania (domyślnie wyłączony). Użyj odsłoniętego filtru wyszukiwanych terminów, aby zapewnić funkcjonalność wyszukiwania i w razie potrzeby dostosuj inne aspekty widoku.
Limit 10 elementów jest zasadniczo zakodowany na stałe w hook_search_execute()
implementacjach (np. node_search_execute()
): Teoretycznie można zaimplementować hook_search_execute()
i zmienić ->limit(10)
zapytanie na coś innego niż 10
.
Ale jak wspomniałem beeradb , prawdopodobnie łatwiej jest po prostu użyć widoków, aby zastąpić podstawowe wyniki wyszukiwania.
Drupal nie daje obecnie możliwości zmiany liczby wyników wyszukiwania na stronie. Jak sugeruje @beeradb, możesz użyć modułu Widoki (samouczek wideo dla D7 na http://lin-clark.com/blog/intro-drupal-7-intro-views-pt-1 ).
Jest prośba o udostępnienie tej funkcji w Drupal 8 http://drupal.org/node/702940 .
W Drupal 7 byłem w stanie zmodyfikować podstawowe wyniki wyszukiwania na stronie za pomocą hook_query_alter w module niestandardowym. Poniższy fragment kodu może być użyty, jeśli jesteś zaznajomiony z używaniem hooków w kodzie:
<?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);
}
}
Nie znalazłem „widoku wyszukiwania” w module widoków. Korzystam z widoków 7.x-3.7.
Aby uzyskać więcej niż 10 wyników wyszukiwania na jednej stronie w Drupal 7, użyłem modułu search_config . Użyłem jego najnowszej wersji „7.x-1.1-beta2”.
Po włączeniu modułu możesz skonfigurować limit stronicowania w Konfiguracja-> Wyszukiwanie i metadane-> Ustawienia wyszukiwania (admin / config / search / settings) w sekcji „DODATKOWA KONFIGURACJA WYSZUKIWANIA NODE”. Zobaczysz sekcję „Wyniki” i możesz określić limit stronicowania, aby wyświetlić więcej niż 10 wyników wyszukiwania na jednej stronie.
Wygląda na to, że domyślny widok wyszukiwania został usunięty z modułu Widoki, więc oto szybko go podrzuciłem, którego możesz użyć jako punktu wyjścia dla własnych wymagań. Użyj okna dialogowego Importuj widoki i wklej kod, aby go zaimportować.
$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';