在安企CMS中,实现单个页面上聚合显示多个文章分类的内容列表,是一个非常实用的需求,它能帮助网站管理员高效地组织内容,为访客提供更便捷的浏览体验。这通常应用于网站首页、专题页或聚合页,通过巧妙地运用AnQiCMS的模板标签,我们可以轻松达成这一目标。

核心思路:标签组合与循环嵌套

安企CMS提供了灵活的模板标签系统,其中categoryListarchiveList是实现内容聚合展示的两位核心玩家。我们的基本思路是:

  1. 首先获取你希望聚合展示的分类列表。 这可能是顶级分类,也可能是某个父级分类下的子分类。
  2. 然后遍历这些分类。 在每一次循环中,我们将得到当前分类的详细信息。
  3. 在每个分类内部,再根据当前分类的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循环是遍历categoryListarchiveList返回的列表数据的基本方式。if条件判断则用于控制在特定情况下内容的显示,例如判断是否有缩略图,或者处理列表为空的情况。

4. stampToDate:时间格式化

在显示文章发布时间时,archive.CreatedTime返回的是时间戳,我们可以使用stampToDate标签将其格式化为易于阅读的日期格式,例如{{stampToDate(archive.CreatedTime, "2006-01-02")}}

5. categoryDetail:获取分类详情

虽然在categoryListfor循环中可以直接访问item.Titleitem.Link,但在某些需要获取更细致分类信息(如分类图片LogoThumb)的情况下,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>