Wyróżnić wyszukiwane słowo kluczowe za pomocą odsłoniętych widoków filtrów?

12

W widoku dodałem odsłonięty filtr: Szukaj: Filtr wyszukiwanych haseł

Działa dobrze, ale chciałbym podświetlić wyszukiwane słowo kluczowe w wynikach.

Jak mogę to zrobić?

chefnelone
źródło
Możesz użyć do tego pliku tpl ...
Sumit Madan
tak, chyba powinienem użyć funkcji do zastąpienia szukanego słowa kluczowego. Ale jak pobrać wyszukiwane słowo kluczowe i co zrobić, jeśli istnieje więcej niż jedno słowo kluczowe?
chefnelone
Jeśli możesz użyć jQuery, istnieje mały, trudny sposób, aby to zrobić.
niksmac,
tak, pomyśl o tym, jak zdobyć ... możesz użyć jquery, jak powiedział Nikhil ..: D
Sumit Madan

Odpowiedzi:

7

Możesz użyć czegoś takiego jak wyróżnienie, które wyszukuje i dodaje klasę do wszystkich wystąpień słowa na stronie, a zamiast podawać słowo statyczne, używałbyś zawartości pola wyszukiwania.

Możesz znaleźć więcej informacji i linki do innych wersji w pytaniu StackOverflow, Podkreśl słowo za pomocą jQuery .

beth
źródło
Sprawiam, że działa. Jest javascript, ale jest w porządku. Dzięki.
chefnelone
11

Za pomocą funkcji search_excerpt możesz podświetlić wyszukiwane słowo kluczowe. Pokazuje słowo kluczowe pogrubioną czcionką.

Zwraca fragmenty tekstu z zaznaczonym słowem kluczowym. Służy do formatowania wyników wyszukiwania.

Przykład jest pokazany poniżej,

na przykład: // pole ciała jest tutaj odsłonięte

w swoich widokach plik tpl dodaj następujący kod

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

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

podświetli wyszukiwane słowo, patrz zrzut ekranu poniżej

wprowadź opis zdjęcia tutaj

Anoop Joseph
źródło
Wykonuje zadanie, ale usuwa strukturę wiersza widoku. Widok pokazuje zawartość (nie pola) jako zwiastun. Po zakończeniu wyszukiwania wynik nie pokazuje zwiastuna, a jedynie surowe dane. Czy można to rozwiązać.
chefnelone
Widzę, że funkcja search_excerpt usuwa wszystkie znaczniki. Czy można to w jakiś sposób zmienić?
chefnelone
Myślę, że jest to najlepsza opcja, jeśli widoki mają styl pokazujący pola, ale nie są przydatne, jeśli widok pokazuje zawartość (pełny, zwiastun, ..)
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);
    }
  }
}

Przykład pola ciała . Do niestandardowego modułu.

Aleksander Pilipenko
źródło