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


17

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?


1
Pour ceux qui souhaitent savoir pourquoi il n'est actuellement pas possible de le faire facilement, voir: drupal.org/node/33809
coderintherye

J'avais besoin de faire de même dans Drupal 8 et je ne suis pas en mesure de modifier la limite de pagination des résultats de recherche. pouvez-vous aider à ce sujet.?
Naveen Kumar

Réponses:


15

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.


Merci pour la recommandation. Cela semble être la manière la plus simple, mais dans Drupal 7, je ne vois aucune vue de recherche incluse.
mivoligo

Vous pouvez définir définitivement les vues dans une vue qui affiche les résultats de la recherche comme core search.module
Daniel Wehner

11

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.



4

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

0

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.


Cela ne semble pas fonctionner avec Apache Solr.
Jack Ryan

0

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';

-2

Vous pouvez également utiliser le module de limite de recherche ou utiliser le code suivant dans template.php

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

$variables['quantity'] = 5; 

}
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.