如何使用AnQiCMS的`archiveList`标签获取指定内容模型下的文档列表?

AnQiCMS 内容管理:用 archiveList 标签精准获取文档列表的奥秘

作为一位资深的网站运营专家,我深知内容管理系统(CMS)的核心价值在于其内容的组织与展示能力。在 AnQiCMS 这款高效灵活的 Go 语言内容管理系统中,archiveList 标签无疑是内容展示环节的强大武器。它不仅仅是一个简单的内容调用标签,更是连接您网站内容模型与前端展现逻辑的关键桥梁。今天,我们就来深入探讨如何充分利用 archiveList 标签,精确高效地获取您在指定内容模型下的文档列表。

archiveList:AnQiCMS 内容展现的核心

AnQiCMS 在 v2.1.1 版本中进行了重要的标签重构,移除了原有的 articleproduct 等特定标签,统一引入了 archive 系列标签,并全面拥抱了内容模型(Content Model)的概念。这意味着所有文章、产品,乃至您自定义的任何内容类型,都统一归类为“文档(archive)”,并通过所属的内容模型进行区分和管理。archiveList 标签便是这一体系下的核心,它让您可以灵活地根据不同的内容模型、分类、属性等条件,在网站前端展示所需的文档列表。

它的强大之处在于,能够让您在不同的页面模板(如首页、列表页、专题页)上,根据业务需求动态地加载和展示内容,无论是新闻文章、产品介绍、活动信息还是案例展示,archiveList 都能游刃有余。

核心参数解析:精准定位您的内容

要使用 archiveList 标签,您需要将其包裹在一个 for 循环中,因为它的作用是返回一个文档集合。基本的结构是这样的:

{% archiveList archives with ... %}
    {% for item in archives %}
        {# 在这里展示每个文档的具体信息 #}
    {% empty %}
        {# 如果列表为空,则显示此内容 #}
    {% endfor %}
{% endarchiveList %}

其中,archives 是您为文档列表定义的变量名,item 则是循环中代表每个文档的变量。而 with 后面的参数,就是我们精准定位内容的关键。

  1. moduleId - 内容模型,文档之基石 moduleIdarchiveList 标签中至关重要的一个参数。它明确告诉系统您想要获取哪个内容模型下的文档。AnQiCMS 允许您自定义内容模型,例如您可以创建“文章模型”、“产品模型”、“案例模型”等。

    • 如何获取 moduleId 在 AnQiCMS 后台,进入“内容管理”->“内容模型”,您会看到每个模型都有一个唯一的 ID。例如,默认的“文章模型”通常 ID 为 1,“产品模型”通常 ID 为 2。在自定义模型时,您也可以记录下其对应的 ID。
    • 示例: 如果您想获取所有文章模型下的文档列表,您可以这样写:moduleId="1"
  2. categoryId - 精准定位内容的分类 当您的内容模型下有多个分类时,categoryId 参数可以帮助您进一步缩小范围,只获取指定分类或多个分类下的文档。

    • 示例: 获取分类 ID 为 5 的文章列表:categoryId="5" moduleId="1"
    • 多分类: 获取分类 ID 为 567 的文章列表:categoryId="5,6,7" moduleId="1"
    • 当前分类: 如果不指定 categoryIdarchiveList 默认会尝试读取当前页面的分类 ID。如果您希望它不自动读取当前分类,可以明确设置 categoryId="0"
    • 排除分类: 使用 excludeCategoryId="8" 可以排除 ID 为 8 的分类下的文档。
  3. type - 列表呈现的多样性 type 参数定义了您希望 archiveList 如何返回文档数据,它有几个常用值:

    • type="list" (默认值): 获取固定数量的文档列表,通常用于侧边栏推荐、首页最新内容等。
    • type="page": 用于需要分页显示的文档列表。当使用此类型时,您需要配合 pagination 标签来生成分页导航。
    • type="related": 用于获取与当前文档相关的文档列表。这通常在文档详情页中使用,AnQiCMS 会根据当前文档的分类、关键词等自动匹配相关内容。您还可以通过 like="keywords"like="relation" 进一步细化相关规则。
  4. orderlimit - 结果的排序与数量控制

    • order 控制文档的排序方式。常见的值有:
      • order="id desc":按文档 ID 倒序(最新发布)。
      • order="views desc":按浏览量倒序(最热门)。
      • order="sort desc":按后台自定义排序(默认)。
    • limit 控制获取文档的数量。
      • limit="10":获取 10 条文档。
      • limit="2,10":从第 2 条开始,获取 10 条文档(常用于跳过前面几条)。
  5. 其他常用参数:更精细的过滤

    • flag 根据文档的推荐属性(如头条 h、推荐 c、幻灯 f 等)进行筛选。例如 flag="c" 获取推荐文档。
    • q 搜索关键词。仅在 type="page" 时生效,可以用于在文档标题中进行模糊搜索。
    • siteId 在多站点管理模式下,指定获取哪个站点的数据。一般情况下无需填写。
    • child="false" 默认情况下,archiveList 会同时获取指定分类及其子分类下的文档。如果您只想获取当前分类下的文档,可以设置 child="false"
    • userIdparentIdcombineIdcombineFromId 用于更专业的筛选需求,例如按作者、父级文档、组合文档等。

实战演练:archiveList 的应用场景

现在,我们通过几个常见的应用场景来展示 archiveList 的强大功能。

场景一:在首页展示最新发布的文章列表

假设您的文章模型 ID 为 1

”`twig

<h2>最新文章</h2>
<ul>
    {% archiveList archives with moduleId="1" type="list" order="id desc" limit="8" %}
        {% for item in archives %}
        <li>