Standardmäßig werden auf der Suchseite nur 10 Ergebnisse angezeigt. Wie kann ich es ändern, um eine unbegrenzte Anzahl von Ergebnissen anzuzeigen?
Standardmäßig werden auf der Suchseite nur 10 Ergebnisse angezeigt. Wie kann ich es ändern, um eine unbegrenzte Anzahl von Ergebnissen anzuzeigen?
Antworten:
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.
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.
Drupal bietet Ihnen derzeit keine Möglichkeit, die Anzahl der Suchergebnisse pro Seite zu ändern. Wie @beeradb vorschlägt, können Sie das Modul "Ansichten" verwenden (Video-Tutorial für D7 unter http://lin-clark.com/blog/intro-drupal-7-intro-views-pt-1 ).
Es gibt eine Funktionsanforderung für Drupal 8 http://drupal.org/node/702940 .
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);
}
}
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.
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';