在安企CMS中,实现单个页面上聚合显示多个文章分类的内容列表,是一个非常实用的需求,它能帮助网站管理员高效地组织内容,为访客提供更便捷的浏览体验。这通常应用于网站首页、专题页或聚合页,通过巧妙地运用AnQiCMS的模板标签,我们可以轻松达成这一目标。
核心思路:标签组合与循环嵌套
安企CMS提供了灵活的模板标签系统,其中categoryList和archiveList是实现内容聚合展示的两位核心玩家。我们的基本思路是:
- 首先获取你希望聚合展示的分类列表。 这可能是顶级分类,也可能是某个父级分类下的子分类。
- 然后遍历这些分类。 在每一次循环中,我们将得到当前分类的详细信息。
- 在每个分类内部,再根据当前分类的ID获取其下的文章列表并进行展示。 这样,每个分类的文章就会以独立的区块形式呈现在页面上。
通过这种标签组合和循环嵌套的方式,我们就能在一个页面上清晰地展示多个分类及其包含的文章内容。
准备工作:了解模板结构与内容模型
在动手之前,建议您先确认您的AnQiCMS模板结构和内容模型。安企CMS的模板文件通常存放在 /template 目录下,以 .html 为后缀。您可以选择在网站的首页模板 (index.html)、某个单页面 (page/detail.html),或者为特定的聚合页面创建一个自定义模板来放置这些代码。
另外,AnQiCMS支持灵活的内容模型,如“文章模型”、“产品模型”等。在获取分类和文章列表时,务必明确您想要获取的是哪个内容模型下的数据,因为不同的模型有各自独立的分类和文章数据。这通过moduleId参数来指定,例如,moduleId="1"通常代表文章模型,moduleId="2"代表产品模型。
关键模板标签的运用
1. categoryList:获取分类列表
categoryList标签用于获取网站的分类列表。我们可以用它来筛选出需要在页面上展示的分类。
moduleId: 指定内容模型ID,例如moduleId="1"(文章模型)。parentId: 指定父级分类ID。parentId="0"表示获取所有顶级分类,如果您想获取某个特定分类下的子分类,可以填写该分类的ID。- 循环变量
item的常用字段:Id(分类ID),Title(分类名称),Link(分类链接),Description(分类描述)等。
2. archiveList:获取文章列表
archiveList标签是获取文章(或产品,取决于moduleId)列表的核心标签。
type="list": 表示以列表形式展示,通常搭配limit参数。categoryId: 这是最关键的参数,它将与外部categoryList循环中的分类ID绑定,确保获取的是当前分类下的文章。moduleId: 同样需要指定内容模型ID,与categoryList中的moduleId保持一致。limit: 控制每个分类下显示的文章数量,例如limit="6"表示每个分类显示6篇文章。order: 指定文章的排序方式,例如order="id desc"(按ID降序,即最新发布),order="views desc"(按浏览量降序)。- 循环变量
archive的常用字段:Id(文章ID),Title(文章标题),Link(文章链接),Description(文章简介),Thumb(缩略图),CreatedTime(发布时间),Views(浏览量)等。
3. for 循环与条件判断
for循环是遍历categoryList和archiveList返回的列表数据的基本方式。if条件判断则用于控制在特定情况下内容的显示,例如判断是否有缩略图,或者处理列表为空的情况。
4. stampToDate:时间格式化
在显示文章发布时间时,archive.CreatedTime返回的是时间戳,我们可以使用stampToDate标签将其格式化为易于阅读的日期格式,例如{{stampToDate(archive.CreatedTime, "2006-01-02")}}。
5. categoryDetail:获取分类详情
虽然在categoryList的for循环中可以直接访问item.Title和item.Link,但在某些需要获取更细致分类信息(如分类图片Logo或Thumb)的情况下,categoryDetail标签结合id=item.Id参数使用会更方便。
实战代码示例:聚合显示多个分类的文章列表
假设我们想在首页聚合展示“文章模型”下的几个顶级分类,每个分类显示最新的6篇文章。您可以在您的首页模板文件(例如 /template/default/index.html)中添加以下代码:
”`twig {# 外部循环:获取文章模型的顶级分类列表 #} {% categoryList categories with moduleId=“1” parentId=“0” %}
{% for item in categories %}
<div class="category-block">
{# 显示分类标题和链接 #}
<h3 class="category-title">
<a href="{{ item.Link }}" title="更多{{item.Title}}">{{item.Title}}</a>