页面内搜索: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 %}
```