Mettre en surbrillance le mot clé recherché à l'aide des vues de filtre exposées?

12

Dans une vue et j'ai ajouté un filtre exposé: Recherche: Filtre des termes de recherche

Cela fonctionne bien, mais je voudrais mettre en évidence le mot clé recherché dans les résultats.

Comment puis-je le faire?

chefnelone
la source
Vous pouvez utiliser le fichier tpl pour cela ..
Sumit Madan
oui, je suppose que je devrais utiliser une fonction pour remplacer le mot-clé recherché. Mais comment récupérer le mot-clé recherché et que faire s'il y a plusieurs mots-clés?
chefnelone
Si vous pouvez utiliser jQuery, il existe un petit moyen délicat de le faire.
niksmac
ouais pensez-y comment obtenir .. vous pouvez utiliser jquery comme l'a dit nikhil ..: D
Sumit Madan

Réponses:

7

Vous pouvez utiliser quelque chose comme surbrillance qui trouve et ajoute une classe à toutes les instances d'un mot sur la page, et au lieu de lui donner un mot statique, vous utiliseriez le contenu de la zone de recherche.

Vous pouvez trouver plus d'informations et des liens vers d'autres versions dans la question StackOverflow, Mettez un mot en surbrillance avec jQuery .

beth
la source
Je le fais fonctionner. Est javascript mais ça va. Merci.
chefnelone
11

En utilisant la fonction search_excerpt , vous pouvez mettre en surbrillance le mot-clé recherché. Il affiche le mot-clé en gras.

Renvoie des extraits d'un texte, certains mots clés étant mis en évidence. Utilisé pour formater les résultats de la recherche.

Un exemple est montré ci-dessous,

par exemple: // un champ corporel est exposé ici

dans votre fichier vues tpl ajoutez le code suivant

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

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

il mettra en évidence le mot recherché, voir la capture d'écran ci-dessous

entrez la description de l'image ici

Anoop Joseph
la source
Il fait le travail mais il supprime la structure de la ligne de vue. La vue affiche le contenu (et non les champs) sous forme d'accroche. Une fois la recherche terminée, le résultat ne montre pas le teaser mais seulement les données brutes. Cela peut-il être résolu.
chefnelone
Je vois que la fonction search_excerpt supprime tout balisage. Cela peut-il changer d'une manière ou d'une autre?
chefnelone
Je pense que c'est la meilleure option si les vues sont conçues pour afficher des champs, mais n'est pas utile si la vue montre du contenu (complet, teaser, ..)
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);
    }
  }
}

Exemple pour le champ corporel . Dans votre module personnalisé.

aleksandr pilipenko
la source