ไฮไลต์คำค้นหาที่ใช้มุมมองตัวกรองที่เปิดเผยหรือไม่


12

ในมุมมองและฉันได้เพิ่มตัวกรองแบบเปิดเผย: ค้นหา: ตัวกรองคำค้นหา

มันใช้งานได้ดี แต่ฉันต้องการเน้นคำค้นหาในผลลัพธ์

ฉันจะทำมันได้อย่างไร


คุณสามารถใช้ไฟล์ tpl สำหรับสิ่งนี้ได้
สุมิตรมาน

ใช่ฉันเดาว่าฉันควรใช้ฟังก์ชั่นเพื่อแทนที่คำค้นหา แต่ฉันจะดึงข้อมูลคำค้นหาได้อย่างไรและหากมีคำหลักมากกว่าหนึ่งคำ
chefnelone

หากคุณสามารถใช้ jQuery มีวิธีเล็ก ๆ น้อย ๆ ที่จะทำ
niksmac

ใช่คิดเกี่ยวกับวิธีการที่จะได้รับ .. คุณสามารถใช้ jquery เป็น nikhil กล่าว .. : D
Sumit Madan

คำตอบ:


7

คุณสามารถใช้บางสิ่งบางอย่างเช่นไฮไลต์ที่ค้นหาและเพิ่มคลาสให้กับทุกอินสแตนซ์ของคำบนหน้าและแทนที่จะป้อนเป็นคำคงที่คุณจะใช้เนื้อหาของกล่องค้นหา

คุณสามารถค้นหาข้อมูลเพิ่มเติมและเชื่อมโยงไปยังรุ่นอื่น ๆ ในคำถาม StackOverflow, ไฮไลท์คำกับ jQuery


ฉันทำให้มันทำงานได้ เป็นจาวาสคริปต์ แต่ก็ใช้ได้ ขอบคุณ
chefnelone

11

การใช้ฟังก์ชั่นsearch_excerptคุณสามารถเน้นคำค้นหาได้ มันแสดงคำหลักเป็นตัวหนา

ส่งคืนตัวอย่างจากข้อความโดยเน้นคำหลักบางคำ ใช้สำหรับการจัดรูปแบบผลการค้นหา

ตัวอย่างที่แสดงด้านล่าง

สำหรับเช่น: // เขตข้อมูลร่างกายถูกเปิดเผยที่นี่

ในมุมมองของคุณไฟล์ tpl เพิ่มรหัสต่อไปนี้

 <?php foreach ($rows as $id => $row): 

      $keys = $_GET['body_value'];
      $row = search_excerpt($keys, $row);
 ?>

มันจะเน้นคำค้นหาดูภาพหน้าจอด้านล่าง

ป้อนคำอธิบายรูปภาพที่นี่


มันทำงานได้ แต่ลบโครงสร้างของแถวมุมมอง มุมมองแสดงเนื้อหา (ไม่ใช่ฟิลด์) เป็นทีเซอร์ เมื่อการค้นหาเสร็จสิ้นผลลัพธ์จะไม่แสดงทีเซอร์ แต่เป็นข้อมูลดิบ สามารถแก้ไขได้
chefnelone

ฉันเห็นว่าฟังก์ชั่น search_excerptลบมาร์กอัปทั้งหมด สิ่งนี้สามารถเปลี่ยนแปลงได้หรือไม่?
chefnelone

ฉันคิดว่านี่เป็นตัวเลือกที่ดีที่สุดหากมุมมองมีสไตล์ในการแสดงฟิลด์ แต่ไม่มีประโยชน์หากมุมมองแสดงเนื้อหา (เต็ม, ทีเซอร์, .. )
chefnelone


0
function custom_views_pre_render(&$view) {
  if ($view->name == 'article') {
    $result = $view->result;
    foreach ($result as $i => $row) {
      $body = $view->result[$i]->field_body[0]['rendered']['#markup'];
      $strong = $view->exposed_data['body_value'];
      $view->result[$i]->field_body[0]['rendered']['#markup'] = str_replace($strong, '<strong>' . $strong . '</strong>', $body);
    }
  }
}

ตัวอย่างสำหรับฟิลด์ร่างกาย เป็นโมดูลที่กำหนดเองของคุณ

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