在AnQiCMS中,灵活地在网站页面上展示文章列表是网站内容管理的核心需求之一。无论是构建新闻动态、产品展示、博客文章还是其他任何需要列表呈现的内容,AnQiCMS强大的模板标签体系都能帮助您轻松实现。本文将详细介绍如何利用archiveList模板标签,结合AnQiCMS的各项功能,在您的网站页面中高效、美观地呈现文章列表。
理解archiveList:文章列表的核心标签
archiveList是AnQiCMS中用于获取和展示文章列表数据的核心模板标签。它的设计旨在提供高度的灵活性,让您可以根据不同的需求,如按分类、按模型、按推荐属性甚至按关键词搜索等条件,来筛选并呈现文章内容。
在使用archiveList标签时,您需要将其包裹在一个{% archiveList ... %}和{% endarchiveList %}的结构中。获取到的文章数据通常是一个集合(数组),因此我们还需要配合{% for item in 变量名 %}循环标签来遍历并展示每一篇文章的详细信息。例如,最基本的文章列表调用结构可能如下所示:
{% archiveList archives with type="list" limit="10" %}
{% for item in archives %}
<li>
<a href="{{ item.Link }}">{{ item.Title }}</a>
<span>发布日期: {{ stampToDate(item.CreatedTime, "2006-01-02") }}</span>
</li>
{% empty %}
<li>当前没有文章内容。</li>
{% endfor %}
{% endarchiveList %}
在上面的示例中,archives是我们为文章列表数据定义的变量名,您也可以根据自己的习惯命名。type="list"表示我们希望获取一个普通的文章列表,limit="10"则限定了只显示最新的10篇文章。{% empty %}标签在for循环中非常实用,当archives列表为空时,它会显示“当前没有文章内容”的提示,避免页面出现空白。
archiveList的常用参数与灵活配置
archiveList标签提供了丰富的参数,让您能够精细控制文章列表的显示内容。以下是一些常用参数及其应用场景:
moduleId:指定内容模型 AnQiCMS支持自定义内容模型,例如文章模型、产品模型等。通过moduleId参数,您可以指定从哪个内容模型中获取文章。例如,moduleId="1"通常用于获取默认的文章模型内容,moduleId="2"可能用于获取产品模型的内容。{# 获取产品模型下的最新10条数据 #} {% archiveList products with moduleId="2" type="list" limit="10" %} {# ... 循环展示产品信息 ... #} {% endarchiveList %}categoryId:按分类筛选文章 如果您只想显示特定分类下的文章,可以使用categoryId参数。您可以指定单个分类ID(如categoryId="1"),也可以指定多个分类ID(如categoryId="1,2,3")。如果希望获取当前页面所在分类的文章,通常可以省略categoryId参数,AnQiCMS会自动识别。若要明确不根据当前分类过滤,则可以设置为categoryId="0"。{# 获取分类ID为5的文章列表 #} {% archiveList articles with categoryId="5" type="list" limit="5" %} {# ... 循环展示文章 ... #} {% endarchiveList %}limit:控制显示数量与分页偏移limit参数用于控制列表显示的文章数量。您可以直接指定一个数字(如limit="10"),表示获取前10条。更高级的用法是使用offset,limit的格式,例如limit="5,10"表示从第6条文章开始(跳过前5条),获取接下来的10条文章。这在构建“更多推荐”或需要跳过N条数据时非常有用。{# 跳过前2条,获取接下来的5条文章 #} {% archiveList recentArticles with type="list" limit="2,5" %} {# ... 循环展示文章 ... #} {% endarchiveList %}type:列表类型(普通列表、分页列表、相关文章)type参数是archiveList中一个非常关键的选项:type="list"(默认值): 获取一个固定数量的文章列表,不包含分页信息。type="page": 用于生成带分页功能的文章列表。当设置为type="page"时,通常需要结合pagination标签来渲染页码导航。type="related": 用于获取与当前文章相关的文章。这个参数通常在文章详情页使用,AnQiCMS会根据当前文章的分类或关键词智能推荐相关文章。
{# 结合分页标签展示文章列表 #} {% archiveList paginatedArticles with type="page" limit="10" %} {# ... 循环展示文章 ... #} {% endarchiveList %} {# 渲染分页导航 #} {% pagination pages with show="5" %} {# 具体的页码链接渲染逻辑,例如首页、上一页、中间页、下一页、末页 #} {% if pages.PrevPage %}<a href="{{ pages.PrevPage.Link }}">上一页</a>{% endif %} {% for item in pages.Pages %}<a href="{{ item.Link }}">{{ item.Name }}</a>{% endfor %} {% if pages.NextPage %}<a href="{{ pages.NextPage.Link }}">下一页</a>{% endif %} {% endpagination %}order:指定排序方式 您可以使用order参数来定义文章列表的排序规则。常见的排序方式有:order="id desc":按文章ID倒序(最新发布)。order="views desc":按浏览量倒序(最热门)。order="sort desc":按后台自定义排序字段倒序。order="CreatedTime desc":按创建时间倒序。
{# 获取浏览量最高的5篇文章 #} {% archiveList hotArticles with type="list" limit="5" order="views desc" %} {# ... 循环展示文章 ... #} {% endarchiveList %}flag:按推荐属性筛选 在AnQiCMS后台发布文章时,您可以为文章设置多种推荐属性(如头条[h]、推荐[c]、幻灯[f]等)。通过flag参数,您可以筛选出具有特定推荐属性的文章。例如,flag="h"将只显示被标记为头条的文章。{# 获取所有被标记为幻灯(f)的文章 #} {% archiveList slides with type="list" limit="5" flag="f" %} <img src="{{ item.Logo }}" alt="{{ item.Title }}"> <h3>{{ item.Title }}</h3> {% endarchiveList %}
在循环中获取文章的详细信息
在archiveList标签内部的for循环中,item变量代表了当前遍历到的每一篇文章。您可以通过item.字段名的方式来获取文章的各种属性:
item.Id: 文章IDitem.Title: 文章标题item.Link: 文章详情页链接item.Description: 文章简介item.CreatedTime: 文章发布时间(时间戳格式,需要用stampToDate进行格式化)item.Views: 文章浏览量item.Thumb/item.Logo: 文章缩略图/封面图链接item.CategoryId: 文章所属分类ID
格式化日期
由于CreatedTime等时间字段是时间戳,我们需要使用stampToDate辅助标签来将其格式化为可读的日期字符串。
例如:{{ stampToDate(item.CreatedTime, "2006年01月02日 15:04") }}
获取分类和标签信息
在文章列表中,您可能还希望显示每篇文章所属的分类名称或其关联的标签。这可以通过结合categoryDetail和