Secara default halaman pencarian hanya menunjukkan 10 hasil. Bagaimana saya bisa mengubahnya untuk menampilkan hasil yang tidak terbatas?
Secara default halaman pencarian hanya menunjukkan 10 hasil. Bagaimana saya bisa mengubahnya untuk menampilkan hasil yang tidak terbatas?
Jawaban:
Saya sarankan menggunakan tampilan untuk ini. Tampilan dilengkapi dengan tampilan pencarian yang disertakan (dinonaktifkan secara default). Gunakan filter istilah pencarian yang terbuka untuk menyediakan fungsionalitas pencarian, dan sesuaikan aspek tampilan lainnya sesuai kebutuhan.
Batas 10 item umumnya dikodekan ke dalam hook_search_execute()
implementasi (seperti node_search_execute()
): secara teori, Anda bisa mengimplementasikan hook_search_execute()
dan mengubah ->limit(10)
kueri ke sesuatu selain10
.
Tetapi seperti yang disebutkan beeradb , mungkin lebih mudah menggunakan Tampilan untuk mengesampingkan hasil pencarian inti.
Drupal saat ini tidak memberi Anda opsi untuk mengubah jumlah hasil pencarian per halaman. Seperti yang disarankan @beeradb, Anda dapat menggunakan modul Views (tutorial video untuk D7 di http://lin-clark.com/blog/intro-drupal-7-intro-views-pt-1 ).
Ada permintaan fitur untuk ini untuk masuk ke Drupal 8 http://drupal.org/node/702940 .
Di Drupal 7, saya bisa memodifikasi item hasil pencarian inti per halaman menggunakan hook_query_alter dalam modul khusus. Cuplikan kode berikut dapat digunakan, jika Anda terbiasa menggunakan kait dalam kode:
<?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);
}
}
Saya tidak menemukan 'tampilan pencarian' di modul tampilan. Saya menggunakan tampilan 7.x-3.7.
Untuk mendapatkan lebih dari 10 hasil pencarian pada satu halaman di Drupal 7, saya telah menggunakan search_config modul . Saya menggunakan versi terbaru '7.x-1.1-beta2'.
Setelah modul diaktifkan, Anda dapat mengonfigurasi batas pager dari Konfigurasi-> Pencarian dan metadata-> Pengaturan pencarian (admin / config / pencarian / pengaturan) di bawah bagian 'KONFIGURASI PENCARIAN NODE PENAMBAHAN'. Anda akan melihat bagian 'Hasil' di sana dan Anda dapat menentukan batas halaman untuk menampilkan lebih dari 10 hasil pencarian pada satu halaman.
Tampilan pencarian default tampaknya telah dihapus dari modul Views, jadi inilah yang saya cepat-cepat mengetuk yang dapat Anda gunakan sebagai titik awal untuk kebutuhan Anda sendiri. Gunakan dialog impor Tampilan dan tempel kode untuk mengimpornya.
$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';