使用公开的过滤器视图突出显示搜索到的关键字?


12

在视图中,我添加了一个公开的过滤器:搜索:搜索字词过滤器

效果很好,但我想在结果中突出显示搜索到的关键字。

我该怎么做?


您可以使用第三方物流文件这个..
萨米特麻石

是的,我想我应该使用一个函数来替换搜索到的关键字。但是,如何获取搜索到的关键字?如果关键字不止一个,该怎么办?
Chefnelone

如果可以使用jQuery,则有一种小技巧。
niksmac

是的,想一想如何获取..您可以使用nikhil所说的jquery ..:D
Sumit Madan

Answers:



11

使用search_excerpt函数,您可以突出显示搜索到的关键字。它以粗体显示关键字。

返回一段文本的摘要,突出显示某些关键字。用于格式化搜索结果。

一个例子如下所示,

例如://这里有一个人体场

在您的视图tpl文件中添加以下代码

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

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

它将突出显示搜索到的单词,请参见下面的屏幕截图

在此处输入图片说明


它可以完成工作,但是会删除视图行的结构。该视图将内容(而非字段)显示为预告片。搜索完成后,结果将不会显示预告片,而只会显示原始数据。这可以解决吗?
chefnelone

我看到search_excerpt函数删除了所有标记。可以以某种方式改变吗?
Chefnelone

我认为,如果视图的样式设置为显示字段,则这是最佳选择,但如果视图显示的是内容(完整,预告片等)
则无用。– Chefnelone 2012年


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);
    }
  }
}

身体领域的例子。进入您的自定义模块。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.