Bagaimana saya bisa mendapatkan lebih dari 10 hasil pencarian pada satu halaman di Drupal 7?

17

Secara default halaman pencarian hanya menunjukkan 10 hasil. Bagaimana saya bisa mengubahnya untuk menampilkan hasil yang tidak terbatas?

mivoligo
sumber
1
Bagi mereka yang tertarik pada cerita belakang mengapa hal ini saat ini tidak mungkin dilakukan dengan mudah, lihat: drupal.org/node/33809
coderintherye
Saya perlu melakukan hal yang sama di Drupal 8 dan saya tidak dapat mengubah batas halaman hasil pencarian. dapatkah Anda membantu dalam hal ini?
Naveen Kumar

Jawaban:

15

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.

beeradb
sumber
Terima kasih untuk rekomendasinya. Sepertinya cara termudah, tetapi dalam Drupal 7, saya tidak melihat tampilan pencarian apa pun.
mivoligo
Anda dapat mengonfigurasi tampilan secara pasti dalam tampilan yang menampilkan hasil pencarian seperti pencarian inti. Modul
Daniel Wehner
11

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.

Masyarakat
sumber
4

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);
  }
}
aklump
sumber
0

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.

amitgoyal
sumber
Ini sepertinya tidak berfungsi dengan Apache Solr.
Jack Ryan
0

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

Anda dapat menggunakan modul batas pencarian juga atau menggunakan kode berikut di template.php

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

$variables['quantity'] = 5; 

}
Naresh
sumber