在内容管理系统中,有效组织和展示内容是提升用户体验和网站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 %}
其中,变量名是您自定义的,用于存储获取到的文章列表(例如 articles、newsList 等)。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篇文章。