Виділити пошукове слово за допомогою відкритих переглядів фільтрів?


12

У перегляді я додав відкритий фільтр: Пошук: Фільтр пошукових термінів

Це добре працює, але я хотів би виділити в результатах ключове слово.

Як я можу це зробити?


Ви можете використовувати tpl-файл для цього ..
Sumit Madan

так, я думаю, що я повинен використовувати функцію для заміни ключового слова, що шукається. Але як отримати ключове слово, що шукається, і що, якщо є кілька ключових слів?
chefnelone

Якщо ви можете використовувати jQuery, є невеликий хитрий спосіб зробити це.
niksmac

так, подумайте про те, як отримати .. ви можете використовувати jquery так, як сказав nikhil ..: D
Суміт Мадан

Відповіді:


7

Ви можете використовувати щось на зразок виділення, яке знаходить і додає клас до всіх примірників слова на сторінці, а замість того, щоб подавати його статичним словом, ви використовували б вміст вікна пошуку.

Ви можете знайти більше інформації та посилання на інші версії у питанні StackOverflow. Виділіть слово за допомогою jQuery .


Я працюю. Javascript, але це нормально. Дякую.
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);
    }
  }
}

Приклад для поля тіла . У ваш власний модуль.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.