Làm cách nào tôi có thể nhận được hơn 10 kết quả tìm kiếm trên một trang trong Drupal 7?


17

Theo mặc định trang tìm kiếm chỉ hiển thị 10 kết quả. Làm thế nào tôi có thể thay đổi nó để hiển thị số lượng kết quả không giới hạn?


1
Đối với những người quan tâm đến câu chuyện ngược lại về lý do tại sao điều này hiện không thể thực hiện dễ dàng: drupal.org/node/33809
coderintherye

Tôi cần phải làm tương tự trong Drupal 8 và tôi không thể thay đổi giới hạn phân trang của kết quả tìm kiếm. bạn có thể giúp về điều này.?
Naveen Kumar

Câu trả lời:


15

Tôi khuyên bạn nên sử dụng lượt xem cho việc này. Lượt xem đi kèm với chế độ xem tìm kiếm (bị tắt theo mặc định). Sử dụng bộ lọc thuật ngữ tìm kiếm được hiển thị để cung cấp chức năng tìm kiếm và tùy chỉnh các khía cạnh khác của chế độ xem khi cần.


Cảm ơn đã giới thiệu. Có vẻ như cách dễ nhất, nhưng trong Drupal 7, tôi không thấy bất kỳ chế độ xem tìm kiếm nào được bao gồm.
mivoligo

Bạn có thể định cấu hình chính xác các chế độ xem trong chế độ xem hiển thị kết quả tìm kiếm như core search.module
Daniel Wehner

11

Giới hạn 10 mục nói chung được mã hóa cứng thành các hook_search_execute()triển khai (như node_search_execute()): về lý thuyết, bạn có thể thực hiện hook_search_execute()và thay đổi ->limit(10)truy vấn thành một thứ khác 10.

Nhưng như beeradb đã đề cập , có thể dễ dàng hơn khi chỉ sử dụng Chế độ xem để ghi đè kết quả tìm kiếm cốt lõi.



4

Trong Drupal 7, tôi đã có thể sửa đổi các mục kết quả tìm kiếm cốt lõi trên mỗi trang bằng hook_query_alter trong một mô-đun tùy chỉnh. Đoạn mã sau có thể được sử dụng, nếu bạn quen với việc sử dụng các móc trong mã:

<?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

Tôi không tìm thấy 'lượt xem tìm kiếm' trong mô-đun lượt xem. Tôi đang sử dụng lượt xem 7.x-3.7.

Để có được hơn 10 kết quả tìm kiếm trên một trang trong Drupal 7, tôi đã sử dụng mô-đun search_config . Tôi đã sử dụng phiên bản mới nhất '7.x-1.1-beta2'.

Khi mô-đun được bật, bạn có thể định cấu hình giới hạn máy nhắn tin từ Cấu hình-> Tìm kiếm và siêu dữ liệu-> Cài đặt tìm kiếm (admin / config / search / settings) trong phần 'THÊM TÌM KIẾM TÌM KIẾM TÌM KIẾM NODE'. Bạn sẽ thấy phần 'Kết quả' ở đó và bạn có thể chỉ định giới hạn máy nhắn tin để hiển thị hơn 10 kết quả tìm kiếm trên một trang.


Điều này dường như không hoạt động với Apache Solr.
Jack Ryan

0

Chế độ xem tìm kiếm mặc định dường như đã bị xóa khỏi mô-đun Chế độ xem, vì vậy đây là chế độ xem nhanh mà tôi có thể sử dụng làm điểm bắt đầu cho các yêu cầu của riêng bạn. Sử dụng hộp thoại nhập Lượt xem và dán mã để nhập.

$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

Bạn cũng có thể sử dụng mô-đun giới hạn tìm kiếm hoặc sử dụng mã sau trong template.php

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

$variables['quantity'] = 5; 

}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.