在内容管理系统中,有效组织和展示内容是提升用户体验和网站SEO表现的关键。安企CMS以其灵活强大的模板引擎,让您可以轻松实现根据特定分类ID获取并展示文章列表的需求。无论是构建专题页面、分类归档,还是仅仅为了在首页展示某个特定栏目的最新内容,安企CMS都能提供直观且高效的解决方案。

本文将深入探讨如何利用安企CMS的模板标签功能,特别是archiveList标签,来精准地实现这一目标。


一、前期准备:了解分类ID

在开始编写模板代码之前,我们首先需要明确目标分类的ID。在安企CMS后台,找到“内容管理”菜单下的“文档分类”选项。在这里,您会看到所有已创建的分类列表。每个分类都会有一个唯一的数字ID(通常在编辑分类时可以在URL或详情页看到)。例如,您的“公司新闻”分类的ID可能是“1”,而“产品介绍”分类的ID可能是“5”。请记下您需要获取文章列表的分类ID,这将是我们在模板中精准调用的关键。


二、核心功能:archiveList 标签的妙用

安企CMS的模板系统采用类似Django的语法,其中archiveList标签是获取文章列表的核心工具。它提供了丰富的参数,让您能够高度定制化地筛选和展示内容。

1. archiveList 标签的基本结构

archiveList 标签通常与 for 循环结合使用,用于遍历获取到的文章列表。其基本语法如下:

{% archiveList 变量名 with 参数1="值1" 参数2="值2" %}
    {% for item in 变量名 %}
        {# 在这里展示每篇文章的信息 #}
        <a href="{{ item.Link }}">{{ item.Title }}</a>
        {# ... 更多文章详情字段 ... #}
    {% empty %}
        {# 如果没有找到文章,显示此内容 #}
        <p>该分类下暂无文章。</p>
    {% endfor %}
{% endarchiveList %}

其中,变量名是您自定义的,用于存储获取到的文章列表(例如 articlesnewsList 等)。item则是循环中每篇文章的临时变量。

2. 关键参数详解

为了根据分类ID精准获取文章,我们需要重点关注以下几个参数:

  • categoryId: 这是我们实现“根据分类ID精准获取”的核心参数。您只需将目标分类的ID作为值赋给它。如果是多个分类,可以使用逗号 , 分隔多个ID,例如 categoryId="1,3,5"。如果您希望列出当前页面所在分类的文章(例如您正在访问某个分类列表页),则可以不指定categoryId,系统会自动读取当前分类ID;如果希望明确不自动读取并只通过其他参数筛选,可以设置为categoryId="0"
  • moduleId: 在安企CMS中,内容通常归属于不同的“模型”(如文章模型、产品模型)。为了确保您获取的是文章,通常需要指定 moduleId="1"(文章模型的默认ID)。如果您不确定,可以在后台的“内容模型”管理中查看“文章模型”的ID。
  • limit: 控制您希望显示的文章数量。例如,limit="10" 将显示10篇文章。如果需要跳过前几篇获取后续文章(如实现“从第3篇文章开始显示5篇”),可以使用逗号分隔的格式,如 limit="2,5"(表示从索引为2的元素开始,获取5个元素)。
  • order: 定义文章的排序方式。常见的有:
    • order="id desc":按文章ID降序(最新发布的文章在前)。
    • order="views desc":按浏览量降序(热门文章在前)。
    • order="CreatedTime desc":按创建时间降序(与id desc类似,更明确)。
  • type: 决定列表的类型。
    • type="list" (默认值): 获取指定数量的文章列表,不带分页。
    • type="page": 用于需要分页显示的场景,需要与pagination标签配合使用。
  • child: (默认为true)如果您指定了一个分类ID,并希望同时包含该分类下的所有子分类的文章,则保持默认值child=true即可。如果您只想获取当前指定分类本身的文章,而不包括其子分类的文章,则需要明确设置为child=false
  • excludeCategoryId: 如果您想获取某个模型下的文章,但希望排除掉某些特定的分类,可以使用此参数。例如 excludeCategoryId="2,4" 将排除ID为2和4的分类下的文章。

三、实践场景:根据分类ID展示文章列表

让我们通过一些实际的代码示例,来看看如何根据不同的需求来展示文章列表。

1. 展示单一分类的最新文章列表

假设您想在网站的某个区域展示“公司新闻”(分类ID为1)的最新5篇文章。

<section class="latest-news">
    <h2>公司新闻</h2>
    <ul>
        {% archiveList news with categoryId="1" moduleId="1" limit="5" order="id desc" %}
            {% for item in news %}
                <li>
                    <a href="{{ item.Link }}" title="{{ item.Title }}">{{ item.Title }}</a>
                    <time datetime="{{ stampToDate(item.CreatedTime, "2006-01-02") }}">{{ stampToDate(item.CreatedTime, "2006-01-02") }}</time>
                </li>
            {% empty %}
                <li>暂无公司新闻。</li>
            {% endfor %}
        {% endarchiveList %}
    </ul>
</section>

说明:

  • categoryId="1":精确指定了分类ID为1。
  • moduleId="1":确保我们获取的是文章。
  • limit="5":限制只显示5篇文章。