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


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 .


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


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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.