公開されたフィルタービューを使用して検索キーワードを強調表示しますか?


12

ビューで、公開フィルターを追加しました:検索:検索語フィルター

正常に機能しますが、検索結果で検索キーワードを強調表示したいと思います。

どうすればできますか?


このため、TPLファイル..使用することができます
スミットマダン

はい、検索キーワードを置き換える関数を使用する必要があると思います。しかし、検索されたキーワードを取得するにはどうすればよいですか?複数のキーワードがある場合はどうなりますか?
chefnelone

jQueryを使用できる場合、それを行うには少し注意が必要な方法があります。
niksmac

ええ、どうやって取得するか考えてください.. nikhilが言ったようにjqueryを使用できます。:D
Sumit Madan

回答:


7

ハイライトなど、ページ上の単語のすべてのインスタンスを見つけて追加するクラスを使用できます。静的な単語を入力する代わりに、検索ボックスのコンテンツを使用します。

StackOverflowの質問、jQueryを使用して単語を強調表示するで、他のバージョンへの詳細情報とリンクを見つけることができます。


私はそれを機能させます。javascriptですが、大丈夫です。ありがとう。
chefnelone

11

search_excerpt関数を使用すると、検索されたキーワードを強調表示できます。キーワードを太字で表示します。

特定のキーワードが強調表示されたテキストからスニペットを返します。検索結果のフォーマットに使用されます。

以下に例を示します。

例://ここではbodyフィールドが公開されます

ビューの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.