User 69e88e27
发布于:2025-07-01
使用search tag标签进行分词检索数据
{% 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数据集合 | PagesDrop | site.pages 站点下所有页面进行检索page.children 当前页面下的仅下级页面page.pages 当前页面下的全部页面 | |
keywords | 搜索关键词 | 字符串或变量 | ||
by_user | 标记是否为用户检索,若为 true将自动记录用户检索记录与统计数据 | Boolean | true |
{% search ... %} 和 {% endsearch %} 包裹的内容中,可通过 search 对象获取以下参数:search.pagessearch.keywordssearch.extends由站点页面管理,搜索记录/自定义搜索结果 中配置
<!-- templates/page.liquid -->
{% schema %}
{
"name": "Help Center",
"settings": [
{
"id": "description_en",
"type": "textarea",
"label": "英文描述",
"searchable": true # 开启后,创建的页面中填写此值的,在前端可直接分词搜索
}
]
}
{% endschema %}- 目标:在某栏目页面中实现筛选、搜索功能
- 可筛选页面动态字段(由模版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 %}