노출 된 필터보기를 사용하여 검색된 키워드를 강조 하시겠습니까?


12

보기에서 노출 된 필터를 추가했습니다. 검색 : 검색어 필터

잘 작동하지만 결과에서 검색된 키워드를 강조하고 싶습니다.

내가 어떻게 해?


tpl 파일을 사용할 수 있습니다.
Sumit Madan

예, 검색된 키워드를 대체하는 기능을 사용해야한다고 생각합니다. 그러나 검색된 키워드를 가져 오려면 어떻게합니까? 키워드가 두 개 이상인 경우 어떻게합니까?
chefnelone

jQuery를 사용할 수 있다면 작은 까다로운 방법이 있습니다.
niksmac

그렇습니다. 어떻게 얻을 수 있을지 생각해보십시오. nikhil이 말한 것처럼 jquery를 사용할 수 있습니다. : :
Sumit Madan

답변:


7

페이지에서 단어의 모든 인스턴스에 클래스를 찾아서 추가하는 강조 표시 와 같은 것을 사용할 수 있으며 정적 단어를 제공하는 대신 검색 상자의 내용을 사용합니다.

StackOverflow 질문에서 jQuery로 단어 강조 표시 에서 더 많은 정보와 다른 버전에 대한 링크를 찾을 수 있습니다 .


작동합니다. 자바 스크립트이지만 괜찮습니다. 감사.
chefnelone

11

search_excerpt 기능을 사용 하면 검색된 키워드를 강조 표시 할 수 있습니다. 키워드를 굵게 표시합니다.

특정 키워드가 강조 표시된 텍스트에서 스 니펫을 반환합니다. 검색 결과를 형식화하는 데 사용됩니다.

아래에 예가 나와 있습니다.

예를 들면 다음과 같습니다.

귀하의보기에 tpl 파일에 다음 코드를 추가하십시오

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

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

검색된 단어를 강조 표시합니다 (아래 스크린 샷 참조).

여기에 이미지 설명을 입력하십시오


작업을 수행하지만 뷰 행의 구조를 제거합니다. 보기에 내용이 아닌 필드가 티저로 표시됩니다. 검색이 완료되면 결과에 티저가 아니라 원시 데이터 만 표시됩니다. 이 문제를 해결할 수 있습니까?
chefnelone

search_excerpt 함수가 모든 마크 업을 제거 한다는 것을 알았습니다 . 어떤 식 으로든 변경할 수 있습니까?
chefnelone

보기가 필드를 표시하도록 스타일이 지정된 경우 이것이 가장 좋은 옵션이라고 생각하지만보기에 내용 (전체, 티저 등)이 표시되는 경우에는 유용하지 않습니다.
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);
    }
  }
}

바디 필드의 예입니다 . 사용자 정의 모듈로.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.