在内容管理日益精细化的今天,如何让您的网站内容更智能、更贴心地服务访问者,是提升用户体验和网站价值的关键。安企CMS(AnQiCMS)作为一款高效、灵活的内容管理系统,提供了强大的功能来帮助我们实现这一点,尤其是在动态筛选和展示文章列表方面,其模板标签与URL参数的结合运用,能够轻松构建出高度可定制的内容呈现方式。

这篇文章将详细介绍如何利用URL参数和搜索关键词,在安企CMS中动态筛选并展示您的文章列表,让您的网站内容更具交互性和实用性。


一、理解动态筛选的核心机制

在安企CMS中,动态筛选文章列表主要依赖于两个核心模板标签:archiveList(文档列表标签)和 archiveFilters(文档参数筛选标签),并结合URL中的查询参数(Query Parameters)。

当用户在浏览器中访问一个页面时,URL中可能会包含一些“?”开头的参数,例如 /?category=技术&q=CMS。安企CMS的 archiveList 标签非常智能,当其设置为分页模式(type="page")时,它会自动识别并应用这些URL参数来过滤显示文章列表。这意味着,我们无需编写复杂的后端逻辑,只需在前端模板中合理运用标签,即可实现丰富的筛选功能。


二、基于关键词的快速搜索

最常见的动态筛选方式就是通过搜索关键词。访问者通常希望通过输入关键词来快速找到相关文章。

实现方式:

  1. 构建搜索表单: 在网站的合适位置(如导航栏、侧边栏),添加一个简单的HTML搜索表单。这个表单的提交方式(method)应为 GET,并且搜索框的 name 属性通常设置为 q

    <form method="get" action="/search">
        <div>
            <input type="text" name="q" placeholder="请输入搜索关键词" value="{{urlParams.q}}">
            <button type="submit">搜索</button>
        </div>
    </form>
    
    • 这里 action="/search" 指向您网站的搜索结果页模板(通常是 search/index.html)。
    • value="{{urlParams.q}}" 可以在用户搜索后保留其输入的关键词,提升用户体验。
  2. 显示搜索结果: 在搜索结果页(或其他需要展示搜索结果的页面)的模板中,使用 archiveList 标签并指定 type="page"。安企CMS会自动读取URL中的 q 参数,并根据其值来筛选文章标题包含该关键词的列表。

    {% archiveList archives with type="page" limit="10" %}
        {% for item in archives %}
        <article>
            <h3><a href="{{item.Link}}">{{item.Title}}</a></h3>
            <p>{{item.Description}}</p>
            <footer>发布日期: {{stampToDate(item.CreatedTime, "2006-01-02")}}</footer>
        </article>
        {% endfor %}
        {# 配合分页标签显示分页 #}
        {% pagination pages with show="5" %}
            {# ... 分页链接代码 ... #}
        {% endpagination %}
    {% endarchiveList %}
    

    通过这种方式,当用户提交搜索表单或直接访问类似 yourdomain.com/search?q=安企CMS 的URL时,archiveList 就会自动显示匹配关键词的文章。


三、利用内置字段进行筛选

除了关键词搜索,安企CMS还允许您通过内置的字段(如分类ID、模型ID、推荐属性等)来筛选文章列表。

实现方式:

您可以通过在URL中添加相应的参数来直接控制 archiveList 的筛选行为。

  • 按分类ID筛选: yourdomain.com/list?categoryId=1(显示分类ID为1的文章)
  • 按模型ID筛选: yourdomain.com/list?moduleId=2(显示模型ID为2的文章,如产品模型)
  • 按推荐属性筛选: yourdomain.com/list?flag=c(显示推荐属性为“推荐”的文章)

您可以在模板中手动构建这些筛选链接,或者结合导航标签自动生成。例如,在一个分类列表页中,您可以为每个子分类生成带有 categoryId 参数的链接:

{% categoryList categories with moduleId="1" parentId="0" %}
    <ul>
        {% for item in categories %}
        <li><a href="{{ item.Link }}">{{item.Title}}</a></li>
        {% endfor %}
    </ul>
{% endcategoryList %}

在文档列表页(archiveList type="page")中,如果 categoryId 未指定,它会自动尝试读取当前页面的分类ID进行筛选。


四、通过自定义字段实现高级动态筛选

这是安企CMS动态筛选的强大之处,它允许您根据自己定义的文章属性(例如:地区、房产类型、颜色等)来创建复杂的筛选器。

实现步骤:

  1. 准备工作:在内容模型中定义自定义字段 首先,您需要在安企CMS后台的 内容管理 -> 内容模型 中,为您需要筛选的文章模型添加自定义字段。 例如,如果您的网站是房产网站,文章模型中可能需要添加“地区”(单选/下拉)、“房屋类型”(多选)等字段。在添加字段时,您可以选择不同的字段类型(如单行文本、数字、单项选择、多项选择、下拉选择等),这些字段将在文章发布时供编辑填写。特别是选择类型字段(单项、多项、下拉),它们的选项值将直接用于筛选。

  2. 构建筛选界面:运用 archiveFilters 标签 在您的文章列表页模板中,使用 archiveFilters 标签来自动生成基于这些自定义字段的筛选选项。这个标签会读取您内容模型中定义的筛选字段,并为每个选项生成一个带有相应URL参数的链接。

    ”`twig

    <h4>筛选条件</h4>
    {% archiveFilters filters with moduleId="1" allText="不限" %}
        {% for item in filters %}
        <ul class="filter-group">
            <li><strong>{{item.Name}}:</strong></li> {# 字段名称,如“地区” #}
            {% for val in item.Items %}