如何在AnQiCMS中实现内容列表按自定义参数进行筛选显示?

📅 👁️ 78

在安企CMS中,灵活地展示和筛选内容是网站运营的核心需求之一。当网站的内容结构日益复杂,例如您运营一个电商平台需要按颜色、尺寸筛选产品,或者一个房产网站需要按户型、面积筛选房源时,传统的分类标签可能就不够用了。这时,利用安企CMS强大的自定义参数功能,可以轻松实现内容列表按您定义的参数进行筛选显示,极大地提升用户体验和网站内容的组织效率。

接下来,我们将一起深入了解如何在AnQiCMS中实现这一功能。

理解自定义参数在AnQiCMS中的作用

AnQiCMS最强大的功能之一就是它灵活的内容模型。除了文章标题、内容等基础字段外,系统允许您为每个内容模型自定义额外字段,这些字段就是我们所说的“自定义参数”。例如,在一个“产品”内容模型中,您可以添加“材质”、“颜色”、“尺寸”等字段;在一个“房源”内容模型中,您可以添加“户型”、“面积”、“朝向”等字段。

这些自定义参数不仅能在内容详情页展示,更重要的是,它们可以作为筛选条件,帮助用户快速找到感兴趣的内容。安企CMS为此提供了专门的模板标签,让您能够轻松地将这些参数转化为前端可操作的筛选器。

核心标签:archiveFiltersarchiveList

要在前端实现内容列表的自定义参数筛选,主要会用到安企CMS的两个核心模板标签:archiveFiltersarchiveList

  • archiveFilters 标签:这个标签的职责是生成前端的筛选界面。它能够自动识别您在后台内容模型中定义的、可用于筛选的自定义参数,并将其转化为可点击的筛选选项链接。当用户点击这些链接时,页面URL会携带相应的筛选参数。
  • archiveList 标签:这是用于调取和展示内容列表的标签。当它与archiveFilters配合使用时,它会智能地读取当前页面URL中携带的筛选参数,并根据这些参数自动过滤内容,只展示符合条件的内容。

逐步实现内容列表筛选显示

我们将通过一个具体的例子来演示如何实现按自定义参数筛选内容列表。假设我们有一个“产品”内容模型,并为其添加了“材质”和“颜色”两个自定义字段。

步骤一:准备内容模型与自定义字段

首先,请确保您的AnQiCMS后台已经配置好相应的“内容模型”和“自定义字段”。

  1. 登录后台:进入AnQiCMS后台管理界面。
  2. 创建或编辑内容模型:导航到“内容管理” -> “内容模型”。您可以选择已有的模型(例如“产品模型”)进行编辑,或者创建一个新的内容模型。
  3. 添加自定义字段:在所选内容模型的编辑页面,找到“内容模型自定义字段”区域,点击“添加字段”。
    • 示例字段1(材质)
      • 参数名:材质
      • 调用字段:material (这个字段名将用于模板调用和URL参数)
      • 字段类型:单项选择 (假设材质是单选)
      • 是否必填:根据需要设置
      • 默认值:每一行输入一个选项,例如:木材金属塑料
    • 示例字段2(颜色)
      • 参数名:颜色
      • 调用字段:color
      • 字段类型:多项选择 (假设颜色可以多选)
      • 是否必填:根据需要设置
      • 默认值:每一行输入一个选项,例如:红色蓝色绿色
    • 保存您的内容模型设置。
  4. 发布或编辑内容:在“内容管理” -> “发布文档”或“文档管理”中,为您的“产品”内容选择相应的“材质”和“颜色”字段值。

步骤二:设计列表页模板

接下来,我们需要修改或创建产品列表页的模板文件。假设您的产品列表页模板是 product/list.html

打开您的模板文件(通常位于 /template/您的模板名称/product/list.html)。

1. 构建筛选区域 (archiveFilters)

在模板的适当位置,使用archiveFilters标签来生成筛选器。moduleId参数非常重要,它告诉标签要生成哪个内容模型的筛选参数。allText参数可以自定义“全部”或“不限”等选项的文字。

{# 假设产品模型的ID是2,请根据您的实际情况修改 moduleId 参数 #}
<div class="filter-area">
    <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":指定我们正在为ID为2的产品模型生成筛选器。
  • allText="不限":设置当没有选择任何筛选条件时,显示“不限”文本。
  • 外层for item in filters循环:遍历所有的可筛选参数组(例如“材质”、“颜色”)。
    • item.Name:显示参数的名称,如“材质”、“颜色”。
  • 内层for val in item.Items循环:遍历每个参数组下的所有可选值(例如“木材”、“金属”、“塑料”)。
    • val.Label:显示每个选项的名称,如“木材”、“红色”。
    • val.Link:这是最关键的部分!它会生成带有相应筛选参数的URL。当用户点击时,页面会重新加载,并根据这个URL中的参数进行内容过滤。
    • val.IsCurrent:一个布尔值,如果当前选项已被选中,则为true,可用于添加active样式以突出显示。

2. 展示内容列表 (archiveList)

在筛选区域下方,使用archiveList标签来展示内容。

”`twig

<h2>产品列表</h2>
{# 同样假设产品模型的ID是2。type="page" 开启分页模式,limit="10" 每页显示10条 #}
{% archiveList products with moduleId="2" type="page" limit="10" %}
    {% for item in products %}
    <div class="product-item">
        <a href="{{ item.Link }}">
            <h3>{{ item.Title }}</h3>
            {% if item.Thumb %}
            <img src="{{ item.Thumb }}" alt="{{ item.Title }}">
            {% endif %}
            <p>描述: {{ item.Description }}</p>
            {# 调用自定义字段,注意这里直接使用我们在后台定义的“调用字段”名称 #}
            <p>材质: {{ item.material }}</p>
            <p>颜色: {{ item.color }}</p>
        </a>
    </div>
    {% empty %}
    <p>抱歉,没有找到符合条件的产品。</p>
    {% endfor %}
{% endarchiveList %}

{# 添加分页导航 #}
<div class="pagination-area">
    {% pagination pages with show="5" %}
        {# 首页 #}
        <a class="{% if pages.FirstPage.IsCurrent %}active{% endif %}" href="{{pages.FirstPage.Link}}">{{pages.FirstPage.Name}}</a>
        {# 上一页 #}
        {% if pages.PrevPage %}
        <a href="{{pages.PrevPage.Link}}">{{pages.PrevPage.Name}}</a>
        {% endif %}
        {# 中间多页 #}
        {% for pageItem in pages.

相关文章

AnQiCMS如何显示分类的缩略图或Banner组图?

网站内容的视觉呈现是吸引用户、提升体验的关键。尤其在分类页面,一张精美的缩略图或一组引人注目的Banner组图,能让用户对内容一目了然,激发浏览兴趣。AnQiCMS作为一款功能强大的内容管理系统,提供了灵活的图片管理和调用机制,让您能够轻松地为网站分类设置并展示独特的视觉元素。 ### 一、后台配置:为您的分类添加视觉魅力 要在AnQiCMS中为分类展示图片,首先需要在后台进行相应的配置

2025-11-08

如何在AnQiCMS中设置网站为“闭站”状态并显示自定义提示信息?

在网站运营过程中,有时需要暂时关闭网站,无论是进行系统升级、数据维护,还是短暂调整内容,AnQiCMS 都提供了一个简洁高效的闭站功能,帮助我们优雅地管理网站的暂时停用状态。这不仅能避免用户看到错误页面影响体验,还能清晰地传达信息,维护品牌形象。 接下来,我们将详细了解如何在 AnQiCMS 中设置网站为“闭站”状态,并显示个性化的提示信息。 --- ### 第一步

2025-11-08

AnQiCMS如何利用Tag标签将相关文档关联并显示在前端?

AnQiCMS在内容管理上,不仅提供了强大的分类功能来组织网站结构,更通过灵活的Tag标签机制,为内容的深度关联和多维度展示开辟了新的途径。想象一下,您的网站如同一个图书馆,分类是不同的书架,而Tag标签则像是书本上的不同主题关键词,让读者可以根据兴趣,发现散落在不同书架上但主题相近的书籍。 接下来,我们就来深入了解AnQiCMS如何利用Tag标签,让您的网站内容关联更加智能,前端展示更加丰富

2025-11-08

如何在AnQiCMS中显示文章的浏览量和评论数量?

在内容运营中,文章的浏览量和评论数量是衡量内容受欢迎程度和用户参与度的重要指标。它们不仅能为读者提供参考,也能帮助运营者洞察内容表现。AnQiCMS作为一个功能强大的内容管理系统,自然也提供了简便的方式来展示这些实时数据,让您的网站内容更具互动性和透明度。 在AnQiCMS中,无论是文章、产品还是其他内容类型,都被系统统一称为“文档”(archive)

2025-11-08

AnQiCMS如何显示访客留言表单并管理留言结果?

与网站访客保持互动,收集用户反馈,是每个网站运营者都非常重视的环节。无论是解答疑问、收集建议,还是提供客户服务,一个高效便捷的留言系统都能极大地提升用户体验和运营效率。AnQiCMS 深知这一点,为我们提供了简洁高效的访客留言功能,让从表单展示到结果管理的全过程变得轻松自如。 ### 轻松构建访客留言表单 要在网站前端展示访客留言表单,AnQiCMS 采用了灵活的模板标签方式。通常

2025-11-08

如何在AnQiCMS模板中获取并展示特定用户组的详情(如VIP等级)?

在安QiCMS中管理用户和内容,我们经常会遇到需要根据用户的身份(比如VIP等级)来展示不同信息的需求。安QiCMS强大的模板引擎和用户组管理功能,让实现这一目标变得非常直观和高效。 今天,我们就来一起探讨如何在AnQiCMS的模板中,获取并灵活展示特定用户组的详细信息,例如VIP等级的名称。 ### 了解安QiCMS的用户组与VIP系统 安QiCMS内置了完善的用户组管理与VIP系统

2025-11-08

AnQiCMS如何过滤或替换内容中的外链以规范显示?

网站内容中包含的外部链接,如果管理不当,可能会对网站的搜索引擎优化(SEO)效果、用户体验乃至内容质量产生负面影响。AnQiCMS 作为一个功能全面的内容管理系统,提供了一系列强大而灵活的工具,帮助您有效地过滤或替换内容中的外链,确保网站内容的规范化显示。 ### 智能处理外部链接:后台设置的便捷开关 AnQiCMS 在外链管理方面首先提供了一个非常便捷的全局设置

2025-11-08

如何在AnQiCMS模板中生成指定长度的随机文本作为占位内容?

## 在AnQiCMS模板中生成指定长度的随机文本作为占位内容 在网站开发和内容运营过程中,我们经常会遇到需要填充占位内容(Placeholder Content)的场景。无论是在设计新模板、测试页面布局,还是在内容尚未完全就绪时进行初步展示,占位文本都能帮助我们快速构建原型,直观地评估视觉效果,而无需等待真实内容的填充。 AnQiCMS 的模板系统非常强大,它支持类 Django

2025-11-08