Làm nổi bật từ khóa tìm kiếm bằng cách sử dụng lượt xem bộ lọc?


12

Trong chế độ xem và tôi đã thêm bộ lọc được hiển thị: Tìm kiếm: Bộ lọc Điều khoản tìm kiếm

Nó hoạt động tốt, nhưng tôi muốn làm nổi bật từ khóa tìm kiếm trong kết quả.

Tôi làm nó như thế nào?


Bạn có thể sử dụng tệp tpl cho việc này ..
Sumit Madan

vâng, tôi đoán rằng tôi nên sử dụng một chức năng để thay thế từ khóa tìm kiếm. Nhưng làm cách nào để tôi tìm nạp từ khóa được tìm kiếm, và nếu có nhiều hơn một từ khóa thì sao?
Chefnelone

Nếu bạn có thể sử dụng jQuery, có một cách nhỏ để làm điều đó.
niksmac

yeah, hãy suy nghĩ về cách lấy .. bạn có thể sử dụng jquery như nikhil đã nói ..: D
Sumit Madan

Câu trả lời:


7

Bạn có thể sử dụng một cái gì đó như tô sáng tìm và thêm một lớp cho tất cả các trường hợp của một từ trên trang và thay vì cho nó một từ tĩnh, bạn sẽ sử dụng nội dung của hộp tìm kiếm.

Bạn có thể tìm thêm thông tin và liên kết đến các phiên bản khác trong câu hỏi StackOverflow, Đánh dấu một từ bằng jQuery .


Tôi làm cho nó hoạt động. Là javascript nhưng nó ok. Cảm ơn.
Chefnelone

11

Sử dụng chức năng search_excerpt, bạn có thể đánh dấu từ khóa tìm kiếm. Nó hiển thị các từ khóa in đậm.

Trả về các đoạn từ một đoạn văn bản, với các từ khóa nhất định được tô sáng. Được sử dụng để định dạng kết quả tìm kiếm.

Một ví dụ đã được biểu diễn ở dưới,

ví dụ: // một trường cơ thể được hiển thị ở đây

trong tập tin tpl của bạn, thêm đoạn mã sau

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

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

nó sẽ làm nổi bật từ được tìm kiếm, xem ảnh chụp màn hình bên dưới

nhập mô tả hình ảnh ở đây


Nó thực hiện công việc nhưng nó loại bỏ cấu trúc của hàng xem. Chế độ xem đang hiển thị nội dung (không phải các trường) dưới dạng trêu ghẹo. Khi tìm kiếm được thực hiện, kết quả không hiển thị lời trêu ghẹo mà chỉ là dữ liệu thô. Điều này có thể được giải quyết.
Chefnelone

Tôi thấy rằng hàm search_excerpt xóa tất cả đánh dấu. Điều này có thể được thay đổi theo một cách nào đó?
Chefnelone

Tôi nghĩ rằng đây là tùy chọn tốt nhất nếu các chế độ xem được tạo kiểu để hiển thị các trường, nhưng không hữu ích nếu chế độ xem hiển thị nội dung (đầy đủ, trêu ghẹo, ..)
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);
    }
  }
}

Ví dụ cho trường cơ thể . Vào mô-đun tùy chỉnh của bạn.

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.