AnQiCMS的`archiveList`标签如何筛选和显示指定分类或模型的文档列表?

📅 👁️ 65

AnQiCMS 作为一款高效的企业级内容管理系统,为用户提供了灵活多样的内容管理和展示能力。在构建网站时,我们经常需要根据特定的条件来显示文档列表,例如只展示某个分类下的文章,或者只列出特定内容模型(如产品、服务)的条目。这时,archiveList 标签就成为了我们手中的利器。它不仅功能强大,而且使用起来非常直观,能够帮助我们轻松实现这些需求。

archiveList:获取文档列表的核心标签

archiveList 标签是 AnQiCMS 模板系统中用于查询和显示“文档”列表的关键。这里的“文档”是一个广义的概念,它可以是您网站上的文章、产品信息、新闻动态,甚至是自定义内容模型中的任何条目。通过灵活配置 archiveList 的参数,我们可以精确控制需要显示哪些内容。

它的基本使用方式通常是这样的:

{% archiveList 变量名称 with 参数="值" %}
    {% for item in 变量名称 %}
        <!-- 在这里显示每个文档的具体信息 -->
    {% endfor %}
{% endarchiveList %}

其中,“变量名称”是我们为获取到的文档列表自定义的一个名字,例如 articlesproducts,后续在 for 循环中就可以通过 item(或您自定义的其他循环变量)来访问列表中的每个文档数据。

按内容模型筛选:定义内容的边界

AnQiCMS 的一大亮点就是其灵活的内容模型。您可以根据业务需求创建不同的内容模型,比如“文章模型”、“产品模型”、“案例模型”等。当您想只显示某一特定模型下的文档时,archiveList 标签的 moduleId 参数就能派上用场。

moduleId 参数允许您指定要获取哪个内容模型下的文档列表。每个内容模型在后台都有一个唯一的 ID。例如,假设“文章模型”的 ID 是 1,而“产品模型”的 ID 是 2。如果您想在页面上展示最新的 5 篇“文章”,您可以这样写:

{% archiveList articles with moduleId=1 limit=5 %}
    {% for item in articles %}
        <li><a href="{{ item.Link }}">{{ item.Title }}</a></li>
    {% endfor %}
{% endarchiveList %}

通过将 moduleId 设置为 1archiveList 便会聪明地只从“文章模型”中检索数据。同样,如果您需要展示“产品模型”下的内容,只需将 moduleId 的值替换为相应的 ID 即可。

按分类筛选:精准定位内容范围

除了按内容模型筛选,我们更常遇到的需求是根据内容分类来显示文档。比如,在文章列表页,我们可能只想展示“CMS教程”这个分类下的所有文章。archiveListcategoryId 参数正是为此而生。

您可以将 categoryId 设置为某个分类的 ID。例如,如果“CMS教程”分类的 ID 是 10,您可以这样获取该分类下的文档列表:

{% archiveList tutorialArticles with categoryId=10 limit=10 %}
    {% for item in tutorialArticles %}
        <h3><a href="{{ item.Link }}">{{ item.Title }}</a></h3>
        <p>{{ item.Description }}</p>
    {% endfor %}
{% endarchiveList %}

categoryId 参数不仅支持单个分类 ID,还可以接收多个分类 ID,它们之间用逗号 , 分隔。这样,您就可以一次性显示来自多个指定分类的文档:

{% archiveList mixedContent with categoryId="10,12,15" limit=10 %}
    {% for item in mixedContent %}
        <p>来自分类ID {{ item.CategoryId }}:<a href="{{ item.Link }}">{{ item.Title }}</a></p>
    {% endfor %}
{% endarchiveList %}

有时,我们可能需要排除某些分类,这时可以使用 excludeCategoryId 参数。比如,您想显示所有文章,但排除 ID 为 1011 的分类:

{% archiveList allButExcluded with moduleId=1 excludeCategoryId="10,11" limit=10 %}
    {% for item in allButExcluded %}
        <li><a href="{{ item.Link }}">{{ item.Title }}</a></li>
    {% endfor %}
{% endarchiveList %}

值得一提的是,分类常常是分层级的(有父分类和子分类)。archiveList 默认会显示当前分类及其所有子分类的文档。如果您只想显示当前分类直接包含的文档,而不包括其子分类的文档,可以设置 child=false

{# 只显示分类ID为10的直接文档,不包含其子分类 #}
{% archiveList directArticles with categoryId=10 child=false limit=10 %}
    {% for item in directArticles %}
        <li><a href="{{ item.Link }}">{{ item.Title }}</a></li>
    {% endfor %}
{% endarchiveList %}

组合筛选条件:实现更复杂的查询

archiveList 的强大之处在于,您可以将上述筛选条件与其他参数灵活组合,实现更精细的文档查询。

  • 推荐属性 (flag):如果您在后台为文档设置了“头条”、“推荐”、“幻灯”等属性,可以通过 flag 参数来筛选。例如,显示所有被标记为“推荐”的文章:
    
    {% archiveList recommendedArticles with moduleId=1 flag="c" limit=5 %}
        {% for item in recommendedArticles %}
            <li><a href="{{ item.Link }}">[推荐] {{ item.Title }}</a></li>
        {% endfor %}
    {% endarchiveList %}
    
  • 排序方式 (order):您可以根据文档的 ID(最新发布)、浏览量(最热门)或后台自定义排序来排列列表。例如,按浏览量降序排列:
    
    {% archiveList hotArticles with moduleId=1 order="views desc" limit=5 %}
        {% for item in hotArticles %}
            <li>{{ item.Title }} ({{ item.Views }} 阅读)</li>
        {% endfor %}
    {% endarchiveList %}
    
  • 显示数量 (limit):控制列表显示多少条文档。您也可以使用 offset,limit 格式来实现跳过前几条再获取指定数量。例如,从第 2 条开始获取 5 条:limit="2,5"
  • 列表类型 (type):除了默认的 list 类型(固定数量),type="page" 用于配合 pagination 标签实现分页功能,而 type="related" 则用于获取当前文档的相关文档。
  • 搜索关键词 (q):当 type="page" 时,可以结合 q 参数进行关键词搜索,它会根据 URL 中的 q 参数自动匹配标题

相关文章

如何在AnQiCMS模板中使用`for`循环标签遍历并显示内容列表?

在AnQiCMS中,高效地展示内容列表是网站运营中的核心需求。无论是文章、产品、分类,还是自定义数据,我们都需要一套灵活的机制来遍历并呈现这些信息。AnQiCMS强大的模板引擎提供了`for`循环标签,它就像一个得力的助手,能帮助我们轻松实现这一目标。 ### 认识AnQiCMS模板中的`for`循环标签 AnQiCMS的模板语法借鉴了Django模板引擎

2025-11-07

AnQiCMS模板如何使用`include`标签实现公共组件(如页头、页脚)的模块化显示?

在构建网站时,我们常常会遇到这样的情况:页面的头部(Header)、底部(Footer)以及一些侧边栏、导航菜单等组件几乎在每个页面都会出现。如果每次都将这些公共部分的代码重复编写,不仅耗时耗力,而且一旦需要修改,就得逐个页面查找并更新,效率低下且容易出错。安企CMS(AnQiCMS)深知这一痛点,在模板引擎中提供了强大的模块化功能,其中`include`标签就是实现公共组件模块化显示的核心工具

2025-11-07

AnQiCMS模板中如何定义基础布局并通过`extends`标签统一显示风格?

在构建网站时,保持页面风格统一、结构清晰是提升用户体验和提高开发效率的关键。AnQiCMS 提供了强大且灵活的模板引擎,它借鉴了 Django 模板的优秀思想,特别是 `extends` 标签的使用,让这一目标变得触手可及。 ### 统一风格的基石:基础布局模板 想象一下,您的网站就像一栋精心设计的建筑,每个房间都有独特的装饰,但它们的承重墙、屋顶和地基都是统一的。在 AnQiCMS

2025-11-07

AnQiCMS的定时发布功能如何控制内容在网站上的显示时机?

在内容运营中,内容的发布时机往往是决定其效果的关键因素之一。无论是为了配合市场活动、迎接流量高峰,还是单纯地想保持网站内容的持续更新,手动掐点发布不仅费时,还容易出错。AnQiCMS 深知这一点,因此提供了一个强大且易用的定时发布功能,旨在帮助您轻松解决内容上线时机的问题,让您的内容总能在**时刻呈现给目标受众。 当您在 AnQiCMS 后台创作新文章、产品介绍或其他任何文档时

2025-11-07

如何在AnQiCMS中为文档列表添加分页功能并优化显示效果?

在网站运营中,如何高效地展示大量内容,同时保证用户体验的流畅性,是一个不容忽视的课题。文档列表的分页功能就是解决这一问题的关键。安企CMS(AnQiCMS)作为一个高效、灵活的内容管理系统,提供了直观且强大的模板标签,让您可以轻松地为文档列表添加分页功能,并在此基础上进行显示优化,让您的网站内容更具吸引力。 ### 安企CMS分页功能的核心

2025-11-07

`archiveDetail`标签如何获取并显示单个文档的完整内容和属性?

在使用安企CMS(AnQiCMS)构建网站内容时,展示单个文档的完整信息是核心需求之一。无论是一篇文章的详细内容、一个产品的详细介绍,还是其他任何自定义内容模型的具体条目,都需要一个高效且灵活的方式来提取和呈现这些数据。这正是 `archiveDetail` 标签发挥作用的地方。 ### 理解 `archiveDetail` 标签的核心作用 `archiveDetail`

2025-11-07

如何在AnQiCMS文档详情页显示上一篇和下一篇文档的链接?

在网站内容的海洋里,用户往往希望能够流畅地浏览相关信息,不希望在看完一篇精彩文章后,还需要返回列表重新寻找下一篇。这不仅影响用户体验,对网站的内部链接结构和搜索引擎优化(SEO)也大有裨益。AnQiCMS 充分考虑到了这一点,为内容详情页提供了方便快捷的导航功能,让用户能够轻松地在不同文档之间跳转。 AnQiCMS 的模板系统非常灵活,它借鉴了 Django 模板引擎的语法

2025-11-07

`relatedArchive`标签如何根据文档关联性显示相关文章列表?

在日常的网站运营中,如何让用户在浏览完一篇文章后,能自然而然地发现更多感兴趣的内容,是提升用户体验、延长网站停留时间、甚至优化SEO效果的关键。安企CMS深知这一点,并提供了强大的模板标签功能,其中`relatedArchive`标签正是用于智能展示相关文章列表的利器。 ## `relatedArchive`标签

2025-11-07