¿Resaltar la palabra clave buscada usando vistas de filtro expuestas?

12

En una vista y agregué un filtro expuesto: Búsqueda: Filtro de términos de búsqueda

Funciona bien, pero me gustaría resaltar la palabra clave buscada en los resultados.

¿Cómo puedo hacerlo?

chefnelone
fuente
Puede usar el archivo tpl para esto ..
Sumit Madan
Sí, supongo que debería usar una función para reemplazar la palabra clave buscada. Pero, ¿cómo obtengo la palabra clave buscada y qué sucede si hay más de una palabra clave?
chefnelone
Si puede usar jQuery, hay una pequeña forma complicada de hacerlo.
niksmac
sí, piense en cómo llegar ... puede usar jquery como dijo nikhil ...: D
Sumit Madan

Respuestas:

7

Podría usar algo como resaltar que encuentre y agregue una clase a todas las instancias de una palabra en la página, y en lugar de alimentarla con una palabra estática, usaría el contenido del cuadro de búsqueda.

Puede encontrar más información y enlaces a otras versiones en la pregunta de StackOverflow, Resalte una palabra con jQuery .

beth
fuente
Lo tengo funcionando. Es javascript pero está bien. Gracias.
chefnelone
11

Con la función search_excerpt puede resaltar la palabra clave buscada. Muestra la palabra clave en negrita.

Devuelve fragmentos de un fragmento de texto, con ciertas palabras clave resaltadas. Se utiliza para formatear resultados de búsqueda.

Un ejemplo se muestra a continuación,

por ejemplo: // un campo del cuerpo está expuesto aquí

en su archivo tpl de vistas agregue el siguiente código

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

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

resaltará la palabra buscada, mira la captura de pantalla a continuación

ingrese la descripción de la imagen aquí

Anoop Joseph
fuente
Hace el trabajo pero elimina la estructura de la fila de vista. La vista muestra contenido (no campos) como avance. Una vez que se realiza la búsqueda, el resultado no muestra el avance sino solo los datos sin procesar. ¿Se puede resolver esto?
chefnelone
Veo que la función search_excerpt elimina todo el marcado. ¿Se puede cambiar esto de alguna manera?
chefnelone
Creo que esta es la mejor opción si las vistas están diseñadas para mostrar campos, pero no es útil si la vista muestra contenido (completo,
avance
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);
    }
  }
}

Ejemplo para campo corporal . En tu módulo personalizado.

aleksandr pilipenko
fuente