Destacar palavra-chave pesquisada usando visualizações de filtro expostas?

12

Em uma exibição, eu adicionei um filtro exposto: Pesquisa: Filtro de termos de pesquisa

Funciona bem, mas eu gostaria de destacar a palavra-chave pesquisada nos resultados.

Como eu posso fazer isso?

chefnelone
fonte
Você pode usar o arquivo tpl para isso ..
Sumit Madan
Sim, acho que devo usar uma função para substituir a palavra-chave pesquisada. Mas como faço para buscar a palavra-chave pesquisada e se houver mais de uma palavra-chave?
precisa saber é o seguinte
Se você pode usar o jQuery, existe uma pequena maneira complicada de fazê-lo.
Niksmac 3/12/12
sim, pense sobre como obter .. você pode usar jquery como nikhil disse ..: D
Sumit Madan

Respostas:

7

Você pode usar algo como destaque que localiza e adiciona uma classe a todas as instâncias de uma palavra na página e, em vez de alimentar uma palavra estática, você usaria o conteúdo da caixa de pesquisa.

Você pode encontrar mais informações e links para outras versões na pergunta StackOverflow, Destaque uma palavra com jQuery .

beth
fonte
Eu faço funcionar. É javascript, mas está ok. Obrigado.
Chefnelone
11

Usando a função search_excerpt , você pode destacar a palavra-chave pesquisada. Ele mostra a palavra-chave em negrito.

Retorna trechos de um pedaço de texto, com determinadas palavras-chave destacadas. Usado para formatar os resultados da pesquisa.

Um exemplo é mostrado abaixo,

por exemplo: // um campo do corpo é exposto aqui

no seu arquivo tpl views, adicione o seguinte código

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

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

destacará a palavra pesquisada, veja a captura de tela abaixo

insira a descrição da imagem aqui

Anoop Joseph
fonte
Ele executa o trabalho, mas remove a estrutura da linha de exibição. A exibição está mostrando o conteúdo (não os campos) como teaser. Depois que a pesquisa é concluída, o resultado não mostra o teaser, mas apenas os dados brutos. Isso pode ser resolvido.
precisa saber é o seguinte
Vejo que a função search_excerpt remove toda a marcação. Isso pode mudar de alguma forma?
Chefnelone
Eu acho que essa é a melhor opção se os pontos de vista é estilo para mostrar campos, mas não é útil se a vista é a exibição de conteúdo (full, provocação, ..)
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);
    }
  }
}

Exemplo para o campo do corpo . No seu módulo personalizado.

aleksandr pilipenko
fonte