Як я можу отримати більше 10 результатів пошуку на одній сторінці в Drupal 7?


17

Сторінка пошуку за замовчуванням показує лише 10 результатів. Як я можу змінити його для відображення необмеженої кількості результатів?


1
Для тих , хто зацікавлений в передісторію, чому це не в даний час можна зробити легко побачити: drupal.org/node/33809
coderintherye

Мені потрібно було зробити те саме в Drupal 8, і я не в змозі змінити ліміт сторінки на результати пошуку. Ви можете допомогти в цьому.
Naveen Kumar

Відповіді:


15

Я рекомендую використовувати для цього представлення даних. Перегляди постачаються із включеним переглядом пошуку (вимкнено за замовчуванням). Використовуйте відкритий фільтр пошукових термінів, щоб забезпечити функціональність пошуку та налаштувати інші аспекти перегляду за потребою.


Дякую за рекомендацію Це виглядає як найпростіший спосіб, але в Drupal 7 я не бачу жодного перегляду пошуку.
mivoligo

Ви можете остаточно налаштувати представлення даних, щоб відображати результати пошуку, такі як core search.module
Daniel Wehner

11

Ліміт на 10 елементів, як правило, важко кодується в hook_search_execute()реалізаціях (як node_search_execute()): теоретично, ви можете реалізувати hook_search_execute()та змінити ->limit(10)запит на щось інше, ніж на 10.

Але, як згадується beeradb , можливо, простіше просто використовувати Views, щоб перекрити основні результати пошуку.


5

Наразі Drupal не дає вам можливості змінити кількість результатів пошуку на сторінці. Як пропонує @beeradb, ви можете використовувати модуль Views (відео-посібник для D7 за адресою http://lin-clark.com/blog/intro-drupal-7-intro-views-pt-1 ).

Для цього є запит на функцію, щоб перейти в Drupal 8 http://drupal.org/node/702940 .


4

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

0

У модулі перегляду я не знайшов "перегляд пошуку". Я використовую представлення 7.x-3.7.

Щоб отримати більше 10 результатів пошуку на одній сторінці в Drupal 7, я використовував модуль search_config . Я використав це остання версія "7.x-1.1-beta2".

Як тільки модуль увімкнено, ви можете налаштувати ліміт пейджера в розділі Конфігурація-> Пошук та метадані-> Налаштування пошуку (адміністратор / конфігурація / пошук / налаштування) у розділі «КОНФІГУРАЦІЯ ДОПОМОГУВАННЯ ДОДАТКУ». Ви побачите розділ "Результати" там, і ви можете вказати ліміт пейджера, щоб показати більше 10 результатів пошуку на одній сторінці.


Здається, це не працює з Apache Solr.
Джек Райан

0

Вигляд пошуку за замовчуванням, здається, було видалено з модуля «Перегляд», тож ось я швидко підключив цю інформацію, яку ви можете використовувати як вихідну точку для власних вимог. Використовуйте діалог імпорту переглядів та вставте код, щоб імпортувати його.

$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

Ви також можете використовувати модуль обмеження пошуку або використовувати наступний код у template.php

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

$variables['quantity'] = 5; 

}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.