Wie kann ich in Drupal 7 mehr als 10 Suchergebnisse auf einer Seite erhalten?

17

Standardmäßig werden auf der Suchseite nur 10 Ergebnisse angezeigt. Wie kann ich es ändern, um eine unbegrenzte Anzahl von Ergebnissen anzuzeigen?

mivoligo
quelle
1
Für diejenigen, die sich für eine Hintergrundgeschichte interessieren, warum dies derzeit nicht einfach möglich ist, siehe: drupal.org/node/33809
coderintherye
Ich musste dasselbe in Drupal 8 tun und kann die Paginierungsgrenze der Suchergebnisse nicht ändern. kannst du dabei helfen?
Naveen Kumar

Antworten:

15

Ich empfehle dazu Views zu verwenden. Ansichten werden mit einer Suchansicht geliefert (standardmäßig deaktiviert). Verwenden Sie einen exponierten Suchbegriffsfilter, um die Suchfunktion bereitzustellen, und passen Sie andere Aspekte der Ansicht nach Bedarf an.

beeradb
quelle
Danke für die Empfehlung. Es sieht nach dem einfachsten Weg aus, aber in Drupal 7 wird keine Suchansicht angezeigt.
mivoligo
Sie können Ansichten in einer Ansicht endgültig konfigurieren, in der die Suchergebnisse angezeigt werden, z. B. core search.module
Daniel Wehner,
11

Das Limit von 10 Elementen ist im Allgemeinen in hook_search_execute()Implementierungen (wie node_search_execute()) fest programmiert : Theoretisch könnten Sie hook_search_execute()die ->limit(10)Abfrage implementieren und in etwas anderes als ändern 10.

Aber wie bereits erwähnt , ist es wahrscheinlich einfacher, Views zu verwenden, um die Kernsuchergebnisse zu überschreiben.

Gemeinschaft
quelle
4

In Drupal 7 konnte ich die wichtigsten Suchergebniselemente pro Seite mithilfe von hook_query_alter in einem benutzerdefinierten Modul ändern. Das folgende Code-Snippet kann verwendet werden, wenn Sie mit der Verwendung von Hooks im Code vertraut sind:

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

Ich habe die Suchansicht im Ansichtsmodul nicht gefunden. Ich benutze Ansichten 7.x-3.7.

Um in Drupal 7 mehr als 10 Suchergebnisse auf einer Seite zu erhalten, habe ich das Modul search_config verwendet . Ich habe die neueste Version '7.x-1.1-beta2' verwendet.

Sobald das Modul aktiviert ist, können Sie das Pager-Limit unter Konfiguration-> Suche und Metadaten-> Sucheinstellungen (admin / config / search / settings) im Abschnitt 'ADDITIONAL NODE SEARCH CONFIGURATION' konfigurieren. Dort wird der Abschnitt "Ergebnisse" angezeigt. Sie können ein Pager-Limit festlegen, um mehr als 10 Suchergebnisse auf einer Seite anzuzeigen.

amitgoyal
quelle
Dies scheint mit Apache Solr nicht zu funktionieren.
Jack Ryan
0

Die Standardsuchansicht scheint aus dem Modul "Ansichten" entfernt worden zu sein. Deshalb habe ich hier eine kurze Zusammenfassung für Sie zusammengestellt, die Sie als Ausgangspunkt für Ihre eigenen Anforderungen verwenden können. Verwenden Sie den Importdialog für Ansichten und fügen Sie den Code ein, um ihn zu importieren.

$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
quelle
-2

Sie können auch das Suchlimit-Modul oder den folgenden Code in template.php verwenden

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

$variables['quantity'] = 5; 

}
Naresh
quelle