在运营网站时,高效地展示内容列表是吸引访客、提升用户体验的关键一环。对于使用 AnQiCMS 的朋友们来说,系统提供了非常灵活且强大的模板功能,可以轻松实现各种复杂的内容展示需求。今天,我们就来探讨如何在 AnQiCMS 网站中显示文章列表,并确保这些文章按照发布时间从最新到最旧的顺序排列,同时支持友好的分页功能。
AnQiCMS 的模板系统借鉴了 Django 模板引擎的语法,这使得内容开发者可以非常容易地上手。您会看到标签(以 {% 和 %} 包裹)用于控制逻辑,而变量(以 {{ 和 }} 包裹)则用于输出数据。掌握这些基本语法,您就能轻松驾驭 AnQiCMS 的内容展示。
理解核心标签:archiveList 与时间排序
要在 AnQiCMS 中显示文章列表,最核心的标签莫过于 archiveList。它专门用于获取网站中的文档数据,包括文章、产品等。这个标签拥有丰富的参数,可以帮助我们精确地筛选、排序和展示内容。
要实现按发布时间降序排序,我们需要关注 archiveList 标签的 order 参数。AnQiCMS 内部存储了每篇文章的发布时间字段,通常是 CreatedTime。因此,将其设置为 order="CreatedTime desc" 就能达到我们想要的效果,desc 表示降序(descending)。如果希望文章能支持分页,我们还需要将 type 参数设置为 page。
此外,由于 CreatedTime 字段通常是一个时间戳,为了让它以我们熟悉的日期格式显示,我们还需要配合使用 stampToDate 模板函数进行格式化。
第一步:准备模板文件
首先,您需要进入 AnQiCMS 的模板文件目录。通常,文章列表会存放在类似 template/your_theme_name/article/list.html 或 template/your_theme_name/list.html 的位置。如果您正在创建一个新的列表页面,可以在 template/your_theme_name/ 下创建新的 HTML 文件,例如 blog_list.html。
第二步:使用 archiveList 标签获取文章数据
在您的模板文件中,我们将使用 archiveList 标签来拉取文章数据。这里,我们指定获取文章模型(通常 moduleId="1" 代表文章模型,具体请以您的后台配置为准)下的所有文章,并按发布时间倒序排列。
{% archiveList archives with moduleId="1" type="page" order="CreatedTime desc" limit="10" %}
{# 循环体将在第三步填充 #}
{% endarchiveList %}
在这段代码中:
archives是我们定义的一个变量名,用来存储获取到的文章列表数据。moduleId="1"告诉系统获取文章模型下的内容。type="page"启用分页模式,这为后续添加分页导航做准备。order="CreatedTime desc"是实现按发布时间降序排序的关键。limit="10"则表示每页显示 10 篇文章。
第三步:循环展示文章内容并格式化时间
获取到文章数据后,我们需要通过 for 循环遍历 archives 变量,将每篇文章的标题、链接、发布时间等信息展示出来。
{% archiveList archives with moduleId="1" type="page" order="CreatedTime desc" limit="10" %}
{% for item in archives %}
<article class="article-item">
<h2><a href="{{ item.Link }}">{{ item.Title }}</a></h2>
<div class="article-meta">
<span>发布时间:{{ stampToDate(item.CreatedTime, "2006-01-02 15:04") }}</span>
<span>浏览量:{{ item.Views }}</span>
{# 您还可以显示文章简介、分类等信息 #}
<p>{{ item.Description }}</p>
</div>
</article>
{% empty %}
<p>抱歉,目前没有找到任何文章。</p>
{% endfor %}
{% endarchiveList %}
这里:
{% for item in archives %}遍历文章列表,item代表当前循环到的文章对象。{{ item.Link }}和{{ item.Title }}分别输出了文章的链接和标题。{{ stampToDate(item.CreatedTime, "2006-01-02 15:04") }}使用stampToDate函数将CreatedTime(时间戳)格式化为 “年-月-日 时:分” 的可读形式。请注意,"2006-01-02 15:04"是 Go 语言特有的日期时间格式化模板,代表参考时间,不能随意更改。{% empty %}块是一个非常实用的特性,当archives列表为空时,它会显示其中的内容,而不是空荡荡的页面。
第四步:添加分页功能(可选但强烈推荐)
如果您的文章数量较多,分页功能将极大地提升用户体验。AnQiCMS 提供了 pagination 标签,可以与 archiveList 的 type="page" 参数无缝衔接。
在 {% endarchiveList %} 标签之后,添加以下分页代码:
{# ... 文章列表循环结束 ... #}
<div class="pagination-container">
{% pagination pages with show="5" %}
{# 首页链接 #}
<a class="page-link {% if pages.FirstPage.IsCurrent %}active{% endif %}" href="{{pages.FirstPage.Link}}">{{pages.FirstPage.Name}}</a>
{# 上一页链接 #}
{% if pages.PrevPage %}
<a class="page-link" href="{{pages.PrevPage.Link}}">{{pages.PrevPage.Name}}</a>
{% endif %}
{# 中间页码 #}
{% for pageItem in pages.Pages %}
<a class="page-link {% if pageItem.IsCurrent %}active{% endif %}" href="{{pageItem.Link}}">{{pageItem.Name}}</a>
{% endfor %}
{# 下一页链接 #}
{% if pages.NextPage %}
<a class="page-link" href="{{pages.NextPage.Link}}">{{pages.NextPage.Name}}</a>
{% endif %}
{# 尾页链接 #}
<a class="page-link {% if pages.LastPage.IsCurrent %}active{% endif %}" href="{{pages.LastPage.Link}}">{{pages.LastPage.Name}}</a>
{% endpagination %}
</div>
这里:
pages是pagination标签自动生成的包含分页信息的变量。