ฉันจะได้รับมากกว่า 10 ผลการค้นหาในหนึ่งหน้าใน Drupal 7 ได้อย่างไร


17

โดยหน้าค้นหาเริ่มต้นแสดงเพียง 10 ผลลัพธ์ ฉันจะเปลี่ยนเป็นแสดงผลลัพธ์ได้ไม่ จำกัด จำนวน


1
สำหรับผู้ที่สนใจเรื่องราวย้อนหลังว่าทำไมจึงไม่สามารถดูได้อย่างง่ายดายในปัจจุบัน: drupal.org/node/33809
coderintherye

ฉันต้องทำสิ่งเดียวกันใน Drupal 8 และฉันไม่สามารถเปลี่ยนขีด จำกัด การแบ่งหน้าของผลการค้นหาได้ คุณช่วยได้ไหม
Naveen Kumar

คำตอบ:


15

ฉันแนะนำให้ใช้มุมมองนี้ จำนวนการดูมาพร้อมกับมุมมองการค้นหา (ปิดใช้งานโดยค่าเริ่มต้น) ใช้ตัวกรองคำค้นหาแบบเปิดเผยเพื่อให้ฟังก์ชันการค้นหาและปรับแต่งมุมมองอื่น ๆ ตามต้องการ


ขอบคุณสำหรับคำแนะนำ ดูเหมือนวิธีที่ง่ายที่สุด แต่ใน Drupal 7 ฉันไม่เห็นมุมมองการค้นหาใด ๆ
mivoligo

คุณสามารถกำหนดค่ามุมมองที่ชัดเจนในมุมมองที่แสดงผลลัพธ์การค้นหาเช่น core search.module
Daniel Wehner

11

โดยทั่วไปข้อ จำกัด จำนวน 10 ข้อนั้นยากที่จะhook_search_execute()นำไปใช้งาน (เช่นnode_search_execute()) ในทางทฤษฎีคุณสามารถนำไปใช้ได้hook_search_execute()และเปลี่ยนแบบสอบถามไปยังสิ่งอื่นที่ไม่ใช่->limit(10)10

แต่ดังที่beeradb พูดถึงอาจเป็นเรื่องง่ายกว่าที่จะใช้ Views เพื่อลบล้างผลการค้นหาหลัก


5

Drupal ไม่ได้ให้ตัวเลือกในการเปลี่ยนจำนวนผลการค้นหาต่อหน้า ตามที่ @beeradb คุณสามารถใช้โมดูล Views (วิดีโอสอนสำหรับ D7 ได้ที่http://lin-clark.com/blog/intro-drupal-7-intro-views-pt-1 )

มีคำขอคุณลักษณะนี้จะไปลงใน Drupal 8 เป็นhttp://drupal.org/node/702940


4

ใน Drupal 7 ฉันสามารถแก้ไขรายการผลลัพธ์การค้นหาหลักต่อหน้าโดยใช้ hook_query_alter ในโมดูลที่กำหนดเอง คุณสามารถใช้ข้อมูลโค้ดต่อไปนี้หากคุณคุ้นเคยกับการใช้ hooks ในรหัส:

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

ฉันไม่พบ 'มุมมองการค้นหา' ในโมดูลมุมมอง ฉันใช้มุมมอง 7.x-3.7

เพื่อให้ได้ผลลัพธ์การค้นหามากกว่า 10 รายการในหนึ่งหน้าใน Drupal 7 ฉันได้ใช้โมดูลsearch_config ฉันใช้มันเป็นรุ่นล่าสุด '7.x-1.1-beta2'

เมื่อโมดูลถูกเปิดใช้งานคุณสามารถกำหนดค่าขีด จำกัด ของเพจเจอร์จาก Configuration-> Search และ metadata-> การตั้งค่าการค้นหา (admin / config / search / settings) ภายใต้หัวข้อ 'การกำหนดค่าการค้นหาโหนดเพิ่มเติม' คุณจะเห็นส่วน 'ผลลัพธ์' ที่นั่นและคุณสามารถระบุวงเงินเพจเจอร์เพื่อแสดงผลการค้นหามากกว่า 10 รายการในหน้าเดียว


ดูเหมือนว่านี่จะไม่ทำงานกับ Apache Solr
แจ็คไรอัน

0

ดูเหมือนว่ามุมมองการค้นหาเริ่มต้นจะถูกลบออกจากโมดูล Views ดังนั้นนี่เป็นมุมมองหนึ่งที่ฉันล้มอย่างรวดเร็วซึ่งคุณสามารถใช้เป็นจุดเริ่มต้นสำหรับความต้องการของคุณเอง ใช้กล่องโต้ตอบการนำเข้า 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';

-2

คุณสามารถใช้โมดูล จำกัด การค้นหาได้เช่นกันหรือใช้รหัสต่อไปนี้ใน template.php

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

$variables['quantity'] = 5; 

}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.