页面内搜索:search

User 69e88e27

发布于:2025-07-01

# search 标签使用说明
---
#### 基本用法

```liquid
{% search collection_name keywords: '关键词', by_user: true %}
  <!-- 这里自定义搜索结果的展示 -->
  {% for page in search.pages %}
    <li><a href="{{ page.url }}">{{ page.link_text }}</a></li>
  {% endfor %}
{% endsearch %}
```

#### 参数说明

- `collection_name`  
  要搜索的pages数据集合,例如 `site.pages`。

- `keywords`  
  搜索关键词。可为字符串或变量。

- `by_user`,default: true
  - 是否为用户检索,布尔值(`true`/`false`)。
  - 将自动记录用户检索记录与统计数据

#### tag 内可用参数

在 `{% search ... %}` 和 `{% endsearch %}` 包裹的内容中,可通过 `search` 对象获取以下参数:

- `search.pages`  
  搜索结果页面集合,可用于遍历。

- `search.keywords`  
  本次搜索的关键词。

- `search.extends`  
  额外扩展信息(如有)。

#### 直达跳转(自动处理,此处仅提示)

如果搜索结果为直达,会自动跳转到目标页面。
> 由站点页面管理,搜索记录/自定义搜索结果 中配置

#### 示例

```liquid
- 目标:在某栏目页面中实现筛选、搜索功能
  - 可筛选页面动态字段(由模版settings中自行开启): tags (array[tag])、 category(string))
  - 可搜索页面内容:页面标题、内容等, 由url中获取params 提供的关键词进行搜索
- 实现方案:通过query tag + search tag,共同处理
- 页面模版中:templates/articles_channel.liquid

<!-- 通过 query进行动态字段过滤数据 -->
{% query pages1 from site.pages %}
  {
    "where": {
      "tags_array_cont_any": ["faq", "help"]
      "category_eq": "会议"
    }
  }
{% endquery %}

<!-- 通过 search 对 pages1 结果进行全文搜索, 并渲染结果 -->
{% search pages1 keywords: params[:q] %}
  <ul>
    {% for page in search.pages %}
      <li><a href="{{ page.url }}">{{ page.link_text }}</a></li>
    {% endfor %}
  </ul>
{% endsearch %}
```

提交反馈