Par défaut, la page de recherche n'affiche que 10 résultats. Comment puis-je le modifier pour afficher un nombre illimité de résultats?
Par défaut, la page de recherche n'affiche que 10 résultats. Comment puis-je le modifier pour afficher un nombre illimité de résultats?
Réponses:
Je recommande d'utiliser des vues pour cela. Les vues sont fournies avec une vue de recherche incluse (désactivée par défaut). Utilisez un filtre de termes de recherche exposé pour fournir la fonctionnalité de recherche et personnaliser d'autres aspects de la vue selon vos besoins.
La limite de 10 éléments est généralement codée en dur dans les hook_search_execute()
implémentations (comme node_search_execute()
): en théorie, vous pouvez implémenter hook_search_execute()
et modifier la ->limit(10)
requête en autre chose que10
.
Mais comme l' a mentionné beeradb , il est probablement plus facile d'utiliser simplement Views pour remplacer les résultats de recherche principaux.
Drupal ne vous donne pas actuellement la possibilité de modifier le nombre de résultats de recherche par page. Comme le suggère @beeradb, vous pouvez utiliser le module Vues (tutoriel vidéo pour D7 à http://lin-clark.com/blog/intro-drupal-7-intro-views-pt-1 ).
Il y a une demande de fonctionnalité pour que cela passe dans Drupal 8 http://drupal.org/node/702940 .
Dans Drupal 7, j'ai pu modifier les principaux éléments de résultats de recherche par page en utilisant hook_query_alter dans un module personnalisé. L'extrait de code suivant peut être utilisé, si vous connaissez l'utilisation des crochets dans le code:
<?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);
}
}
Je n'ai pas trouvé «vue de recherche» dans le module de vues. J'utilise les vues 7.x-3.7.
Pour obtenir plus de 10 résultats de recherche sur une page dans Drupal 7, j'ai utilisé le module search_config . J'ai utilisé sa dernière version «7.x-1.1-beta2».
Une fois le module activé, vous pouvez configurer la limite du pager dans Configuration-> Recherche et métadonnées-> Paramètres de recherche (admin / config / search / settings) sous la section 'CONFIGURATION DE RECHERCHE DE NŒUD ADDITIONNELLE'. Vous verrez la section «Résultats» là-bas et vous pouvez spécifier la limite du pager pour afficher plus de 10 résultats de recherche sur une seule page.
La vue de recherche par défaut semble avoir été supprimée du module Vues. Utilisez la boîte de dialogue d'importation des vues et collez le code pour l'importer.
$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';