デフォルトでは、検索ページには10件の結果のみが表示されます。結果を無制限に表示するように変更するにはどうすればよいですか?
これにはビューを使用することをお勧めします。ビューには検索ビューが含まれています(デフォルトでは無効)。公開された検索用語フィルターを使用して検索機能を提供し、必要に応じてビューの他の側面をカスタマイズします。
通常、10アイテムの制限は hook_search_execute()
実装にハードコード化されています( node_search_execute()
など):理論的には、hook_search_execute()
および->limit(10)
クエリを10
以外のものに変更します。
しかし beeradbが言及 のように、ビューを使用してコアの検索結果をオーバーライドする方がおそらく簡単です。
Drupalは現在、ページごとの検索結果の数を変更するオプションを提供していません。 @beeradbが示唆するように、Viewsモジュールを使用できます(D7のビデオチュートリアル http://lin-clark.com/blog/intro-drupal-7-intro-views-pt-1 ) 。
これをDrupal 8 http://drupal.org/node/70294 に入れるための機能リクエストがあります。
Drupal 7では、カスタムモジュールのhook_query_alterを使用して、ページごとのコア検索結果アイテムを変更できました。次のコードスニペットを使用できます。コード:
<?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);
}
}
ビューモジュールで「検索ビュー」が見つかりませんでした。ビュー7.x-3.7を使用しています。
Drupal 7の1つのページで10を超える検索結果を取得するには、 search_config モジュールを使用しました。最新バージョン '7.x-1.1-beta2'を使用しました。
モジュールが有効になったら、「追加ノード検索構成」セクションの「構成」->「検索とメタデータ」->「検索設定(admin/config/search/settings)」からポケットベル制限を構成できます。そこに「結果」セクションが表示され、ポケットベル制限を指定して、1ページに10を超える検索結果を表示できます。
デフォルトの検索ビューはViewsモジュールから削除されたようですので、ここで簡単に確認し、独自の要件の出発点として使用できます。ビューのインポートダイアログを使用し、コードに貼り付けてインポートします。
$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';