AnQiCMS 作为一款高效、可定制的企业级内容管理系统,在构建功能丰富的网站时,提供了强大的模板标签支持。其中,archiveFiltersarchiveListpagination 这三个标签的协同工作,能够帮助我们轻松搭建出用户体验极佳的筛选页面,让访客能够快速定位到所需内容。

今天,我们就来深入探讨这三个标签是如何珠联璧合,共同构建一个完整且动态的内容筛选体系的。

一、筛选的起点:archiveFilters 标签

一个高效的筛选页面,首先需要提供清晰、灵活的筛选条件。在 AnQiCMS 中,archiveFilters 标签正是扮演了这一角色。它能够根据您在内容模型中自定义的字段,动态地生成一系列可供用户选择的筛选选项。

想象一下,您正在运营一个房产信息网站,用户可能需要根据“房屋类型(公寓、别墅)”、“区域(海淀、朝阳)”、“价格范围”等条件来筛选房源。这些筛选条件并非一成不变,而是与您后台定义的“房屋模型”中的字段紧密关联。

archiveFilters 标签的强大之处在于,它无需您手动硬编码每一个筛选选项。它会读取您为某个内容模型(通过 moduleId 参数指定)配置的可筛选字段,并将其展示出来。例如,如果您为产品模型定义了“颜色”和“尺寸”字段并设置为可筛选,那么 archiveFilters 就会自动生成“颜色”和“尺寸”的筛选区。

它会生成一个包含多个筛选组的对象。每个组代表一个可筛选的字段(如“颜色”),组内包含多个具体选项(如“红色”、“蓝色”)。当用户点击某个筛选选项时,archiveFilters 会智能地生成对应的 URL,并将筛选条件附加到 URL 的查询参数中。此外,它还能通过 IsCurrent 属性,智能判断当前哪个筛选条件被选中,方便我们在前端添加高亮样式,提升用户体验。

核心作用: 动态生成筛选条件界面,并根据用户选择构建筛选参数 URL。

二、内容的核心:archiveList 标签

有了筛选条件,接下来就是展示符合条件的内容列表。archiveList 标签是 AnQiCMS 中用于获取文档(或其他档案内容,如产品)列表的核心标签。它能够根据多种参数来灵活地检索和展示内容。

为了与 archiveFilterspagination 协同工作,archiveList 有一个至关重要的参数设置:type="page"。当 type 设置为 page 时,archiveList 会进入分页模式,这意味着它会根据当前 URL 中的分页信息和筛选参数来获取数据,并返回一个可分页的结果集。

当用户通过 archiveFilters 选择了某个条件,比如“颜色:红色”,URL 中就会出现类似 ?color=red 的查询参数。此时,配置为 type="page"archiveList 会自动解析这些 URL 参数,并根据“颜色为红色”这一条件去数据库中检索匹配的档案内容。这意味着您无需编写额外的代码来处理 URL 参数,archiveList 已经为您做好了这一切。

archiveList 还会返回每个内容项的详细信息,如标题、链接、描述、缩略图、浏览量、发布时间等,这些数据都可以在 for 循环中方便地进行渲染。

核心作用: 根据 URL 中的筛选和分页参数,动态获取并展示匹配的内容列表。

三、流畅的导航:pagination 标签

当筛选后的内容数量依然庞大时,分页功能就变得不可或缺。pagination 标签与 archiveListtype="page"模式下)紧密配合,为用户提供直观、便捷的页面导航。

pagination 标签能够基于 archiveList 返回的分页信息(总条数、总页数、当前页等),生成“首页”、“上一页”、“下一页”以及具体的页码链接。更重要的是,它生成的所有分页链接都会自动继承当前 URL 中所有的筛选参数。

这意味着,无论用户是点击了某个筛选条件,还是在筛选结果中跳转到下一页,原有的筛选条件都会被保留下来。例如,用户筛选了“红色”的产品,并在结果中点击了“下一页”,那么新页面的产品依然是“红色”的,且分页功能正常工作。这种无缝的体验极大地提升了用户在筛选页面中的导航效率。

pagination 标签提供了丰富的页面信息,如 pages.TotalItems(总条目数)、pages.CurrentPage(当前页码)以及 pages.Pages(中间页码数组)等。我们可以利用这些信息来构建一个美观且功能完备的分页导航条,并通过 item.IsCurrent 属性来高亮显示当前页。

核心作用: 为分页内容提供导航链接,并自动保留所有筛选条件。

四、协同工作:构建一个完整的筛选页面示例

现在,让我们通过一个简化的场景来展示这三个标签如何协同工作,构建一个完整的产品筛选页面。

假设我们有一个产品列表页,需要根据产品的“品牌”和“价格区间”进行筛选,并支持分页。

  1. 定义内容模型: 在 AnQiCMS 后台的产品内容模型中,我们已经自定义了“品牌”(单项选择)和“价格区间”(单项选择)这两个字段,并设置为可筛选。