Gesuchtes Keyword mit sichtbaren Filteransichten hervorheben?

12

In einer Ansicht habe ich einen exponierten Filter hinzugefügt: Suche: Suchbegriffsfilter

Es funktioniert einwandfrei, aber ich möchte das gesuchte Schlüsselwort in den Ergebnissen hervorheben.

Wie kann ich es tun?

chefnelone
quelle
Sie können tpl-Datei für diese verwenden ..
Sumit Madan
Ja, ich denke, ich sollte eine Funktion verwenden, um das gesuchte Schlüsselwort zu ersetzen. Aber wie rufe ich das gesuchte Schlüsselwort ab und was ist, wenn es mehr als ein Schlüsselwort gibt?
Chefnelone
Wenn Sie jQuery verwenden können, gibt es einen kleinen kniffligen Weg, dies zu tun.
Niksmac
ja darüber nachdenken , wie man .. Sie jquery verwenden können als nikhil sagte ..: D
Sumit Madan

Antworten:

7

Sie könnten so etwas wie Hervorheben verwenden , um eine Klasse zu allen Instanzen eines Wortes auf der Seite zu finden und hinzuzufügen. Anstatt ein statisches Wort einzugeben, würden Sie den Inhalt des Suchfelds verwenden.

Weitere Informationen und Links zu anderen Versionen finden Sie in der Frage StackOverflow. Markieren Sie ein Wort mit jQuery .

Beth
quelle
Ich bekomme es zum Laufen. Ist Javascript aber ok. Vielen Dank.
Chefnelone
11

Mit der Funktion search_excerpt können Sie das gesuchte Schlüsselwort markieren. Es zeigt das Schlüsselwort in Fettdruck.

Gibt Ausschnitte aus einem Textabschnitt mit bestimmten hervorgehobenen Schlüsselwörtern zurück. Wird zum Formatieren von Suchergebnissen verwendet.

Ein Beispiel ist unten gezeigt,

Zum Beispiel: // hier wird ein Körperfeld freigelegt

Fügen Sie in Ihrer Ansicht tpl-Datei den folgenden Code hinzu

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

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

Das gesuchte Wort wird hervorgehoben (siehe Abbildung unten)

Bildbeschreibung hier eingeben

Anoop Joseph
quelle
Es erledigt die Aufgabe, entfernt jedoch die Struktur der Ansichtszeile. In der Ansicht werden Inhalte (keine Felder) als Teaser angezeigt. Sobald die Suche abgeschlossen ist, zeigt das Ergebnis nicht den Teaser, sondern nur die Rohdaten. Kann das gelöst werden?
Chefnelone
Ich sehe, dass die Funktion search_excerpt alle Markups entfernt. Kann sich das irgendwie ändern?
Chefnelone
Ich denke, dies ist die beste Option, wenn die Ansichten so gestaltet sind, dass Felder
angezeigt werden. Sie
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);
    }
  }
}

Beispiel für ein Körperfeld . In Ihr benutzerdefiniertes Modul.

Aleksandr Pilipenko
quelle