web-dev-qa-db-fra.com

Comment puis-je obtenir plus de 10 résultats de recherche sur une page en Drupal 7?

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?

16
mivoligo

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.

15
beeradb

La limite de 10 éléments est généralement codée en dur dans les implémentations hook_search_execute() (comme node_search_execute() ): en théorie, vous pourriez implémenter hook_search_execute() et remplacez la requête ->limit(10) par autre chose que 10.

Mais comme beeradb mentionné , il est probablement plus facile d'utiliser simplement les vues pour remplacer les principaux résultats de recherche.

11
user7

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 existe une demande de fonctionnalité pour que cela entre dans Drupal 8 http://drupal.org/node/70294 .

5
Chaulky

Dans Drupal 7, j'ai pu modifier les principaux éléments de résultat de recherche par page en utilisant hook_query_alter dans un module personnalisé. L'extrait de code suivant peut être utilisé, si vous êtes familier avec l'utilisation des crochets dans 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);
  }
}
4
aklump

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.

0
amitgoyal

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';
0
Alfred Armstrong