驾驭AnQiCMS:巧用archiveFilters标签实现文档参数组合筛选的艺术
在内容运营中,为用户提供精准、高效的内容检索体验至关重要。设想一下,如果您的网站内容丰富多样,用户却难以快速找到他们所需的信息,这无疑会极大地影响用户体验和网站的转化率。安企CMS深谙此道,为此提供了强大的archiveFilters标签,让我们可以轻松实现文档参数的组合筛选功能,将海量内容变得井然有序。
这项功能就好比您在线购物时,能够根据品牌、颜色、尺寸等多种条件同时筛选商品一样。在安企CMS中,我们可以为文档内容定义各种自定义参数,并通过archiveFilters标签,将这些参数转化为前端页面上直观的筛选条件,让用户能够根据自己的需求,像搭积木一样自由组合筛选条件,从而快速定位到最符合他们心意的文档。
理解“文档参数”:筛选的基础
在深入探讨archiveFilters标签之前,我们首先需要理解什么是“文档参数”。在安企CMS中,除了标题、简介、内容等基础字段外,系统允许您为不同的“内容模型”(例如文章、产品、房产信息等)自定义各种专属字段。这些自定义字段就是我们进行组合筛选的“文档参数”。
例如,如果您的网站是一个房产信息平台,您可以创建一个名为“房产模型”的内容模型,并为其添加诸如“房屋类型”(住宅、商铺、公寓)、“户型”(一室、两室、三室)、“面积区间”、“装修情况”等自定义参数。当您发布一篇房产文档时,就可以在后台的“其他参数”部分为这些字段填入具体值。这些精心定义的参数,正是archiveFilters标签大展身手的舞台。
archiveFilters标签:组合筛选的核心
archiveFilters标签专门用于生成基于文档自定义参数的筛选条件列表。它通常应用于文档列表页或分类页的模板中,与archiveList标签配合使用,共同构建一个动态的、可筛选的内容展示区域。
该标签的用法简洁明了:{% archiveFilters 变量名 with moduleId="1" allText="全部" %}...{% endarchiveFilters %}。其中,moduleId参数至关重要,它告诉系统您希望针对哪个内容模型下的文档参数进行筛选(例如,moduleId="1"可能代表“文章模型”)。allText参数则用于定义“全部”或“不限”这类默认选项的显示文本,如果您不希望显示,也可以设置为false。
当您在模板中调用archiveFilters标签时,它会返回一个包含所有可筛选参数及其选项的数组对象(例如,在上述例子中,您可能将它定义为filters)。这个filters变量的结构非常清晰:
item.Name: 这是参数的显示名称,例如“房屋类型”。item.FieldName: 这是参数在URL查询中使用的字段名,例如“houseType”。当用户点击某个筛选选项时,这个字段名会作为URL参数被传递。item.Items: 这是一个包含当前参数所有可选值的数组。每个可选值又是一个对象,包含:val.Label: 筛选选项的显示文本,例如“住宅”。val.Link: 点击该选项后跳转的URL,其中已经包含了相应的筛选参数。val.IsCurrent: 一个布尔值,表示当前选项是否已被选中,常用于为选中项添加active样式。
实战演练:一步步构建筛选器
现在,让我们通过一个实际的例子,一步步了解如何在AnQiCMS中实现文档参数的组合筛选。
步骤一:定义内容模型中的自定义参数(后台操作)
首先,您需要在AnQiCMS的后台定义文档参数。假设我们有一个“产品模型”,并希望用户能根据“颜色”和“材质”进行筛选。
- 登录AnQiCMS后台,进入“内容管理” -> “内容模型”。
- 找到或创建一个“产品模型”,点击“编辑”。
- 在“内容模型自定义字段”部分,点击“添加字段”。
- 添加第一个字段:
- 参数名:
颜色 - 调用字段:
color - 字段类型:
下拉选择(或多项选择) - 默认值:
红色(一行一个选项)蓝色黑色
- 参数名:
- 添加第二个字段:
- 参数名:
材质 - 调用字段:
material - 字段类型:
下拉选择 - 默认值:
金属塑料木质
- 参数名:
- 添加第一个字段:
- 保存内容模型。
- 在“内容管理” -> “发布文档”中,选择您的“产品模型”下的分类,您会看到“其他参数”部分出现了“颜色”和“材质”字段,为您的产品文档填入相应的值。
步骤二:在模板中运用archiveFilters标签(前端模板文件)
接下来,您需要在前端模板中编写代码来渲染这些筛选器。这通常在{模型table}/list.html或{模型table}/index.html等列表页模板中进行。
{# 假设我们正在产品列表页,其模型ID为2 #}
<div>
<h3>产品筛选</h3>
{% archiveFilters filters with moduleId="2" allText="全部" %}
{% for item in filters %}
<div class="filter-group">
<span class="filter-name">{{item.Name}}: </span>
<ul class="filter-options">
{% for val in item.Items %}
<li class="filter-option {% if val.IsCurrent %}active{% endif %}">
<a href="{{val.Link}}">{{val.Label}}</a>
</li>
{% endfor %}
</ul>
</div>
{% endfor %}
{% endarchiveFilters %}
</div>
在这段代码中,moduleId="2"指定了我们要获取产品模型的筛选参数。外层for循环遍历每一个参数组(如“颜色”、“材质”),item.Name显示参数名称。内层for循环则遍历每个参数组下的具体选项(如“红色”、“金属”),val.Label显示选项文本,val.Link提供筛选链接。val.IsCurrent则会判断当前选项是否被选中,方便我们为其添加active样式,提供视觉反馈。
步骤三:结合archiveList展示筛选结果
当用户点击筛选链接时,URL中会带上相应的查询参数(例如/products/list.html?color=红色&material=金属)。此时,archiveList标签会自动识别并应用这些URL参数进行内容筛选。
”`twig {# 在同一个产品列表页模板中,紧随筛选器代码之后 #}
{% archiveList archives with moduleId="2" type="page" limit="12" %}
{% for item in archives %}
<div class="product-item">
<a href="{{item.Link}}