Сторінка пошуку за замовчуванням показує лише 10 результатів. Як я можу змінити його для відображення необмеженої кількості результатів?
Сторінка пошуку за замовчуванням показує лише 10 результатів. Як я можу змінити його для відображення необмеженої кількості результатів?
Відповіді:
Я рекомендую використовувати для цього представлення даних. Перегляди постачаються із включеним переглядом пошуку (вимкнено за замовчуванням). Використовуйте відкритий фільтр пошукових термінів, щоб забезпечити функціональність пошуку та налаштувати інші аспекти перегляду за потребою.
Ліміт на 10 елементів, як правило, важко кодується в hook_search_execute()
реалізаціях (як node_search_execute()
): теоретично, ви можете реалізувати hook_search_execute()
та змінити ->limit(10)
запит на щось інше, ніж на 10
.
Але, як згадується beeradb , можливо, простіше просто використовувати Views, щоб перекрити основні результати пошуку.
Наразі Drupal не дає вам можливості змінити кількість результатів пошуку на сторінці. Як пропонує @beeradb, ви можете використовувати модуль Views (відео-посібник для D7 за адресою http://lin-clark.com/blog/intro-drupal-7-intro-views-pt-1 ).
Для цього є запит на функцію, щоб перейти в Drupal 8 http://drupal.org/node/702940 .
У Drupal 7 я зміг змінити основні елементи результатів пошуку на сторінці за допомогою mock_query_alter у спеціальному модулі. Наступний фрагмент коду можна використовувати, якщо ви знайомі з використанням гачків у коді:
<?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);
}
}
У модулі перегляду я не знайшов "перегляд пошуку". Я використовую представлення 7.x-3.7.
Щоб отримати більше 10 результатів пошуку на одній сторінці в Drupal 7, я використовував модуль search_config . Я використав це остання версія "7.x-1.1-beta2".
Як тільки модуль увімкнено, ви можете налаштувати ліміт пейджера в розділі Конфігурація-> Пошук та метадані-> Налаштування пошуку (адміністратор / конфігурація / пошук / налаштування) у розділі «КОНФІГУРАЦІЯ ДОПОМОГУВАННЯ ДОДАТКУ». Ви побачите розділ "Результати" там, і ви можете вказати ліміт пейджера, щоб показати більше 10 результатів пошуку на одній сторінці.
Вигляд пошуку за замовчуванням, здається, було видалено з модуля «Перегляд», тож ось я швидко підключив цю інформацію, яку ви можете використовувати як вихідну точку для власних вимог. Використовуйте діалог імпорту переглядів та вставте код, щоб імпортувати його.
$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';