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


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 .


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í


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.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.