AnQiCMS如何获取指定分类下的文章列表并进行分页?
在网站内容运营中,我们常常需要展示特定分类下的文章,并为这些列表提供分页功能,以提升用户体验和网站加载效率。安企CMS(AnQiCMS)凭借其灵活的模板引擎和强大的标签系统,能够轻松实现这一需求。
AnQiCMS的模板系统采用了类似Django模板引擎的语法,使用双花括号 {{变量}} 引用变量,以及单花括号加百分号 {% 标签 %} 调用标签。这使得内容展示的定制化变得非常直观。要获取指定分类的文章列表并实现分页,主要会用到两个核心标签:archiveList 和 pagination。
核心标签解析
首先,我们来了解一下实现目标所需的两个关键标签:
archiveList文档列表标签 这个标签是获取文章、产品等文档数据的核心。它非常灵活,可以根据不同的参数筛选和排序文档。对于获取指定分类下的文章列表并进行分页,archiveList扮演着数据源的角色。categoryId:用于指定要获取哪个分类下的文章。你可以直接传入分类的ID,例如categoryId="1"。如果你正在一个分类页面中,通常不需要显式指定,archiveList标签会默认尝试获取当前页面的分类ID。如果需要从多个分类获取文章,可以用逗号,分隔多个分类ID。moduleId:指定文档所属的内容模型ID,例如文章模型(通常ID为1)、产品模型(通常ID为2)。这有助于精确地筛选出所需类型的文档。type="page":这是实现分页的关键参数。当type设置为page时,archiveList不仅会返回当前页的文章列表,还会生成分页所需的所有数据,这些数据将与pagination标签配合使用。limit:用于指定每页显示的文章数量,例如limit="10"表示每页显示10篇文章。order:定义文章的排序方式,常见的有按最新发布order="id desc"或按浏览量order="views desc"。- 此外,还有
child(是否包含子分类文章)、flag(推荐属性)、q(搜索关键词)等参数,可以根据具体需求灵活运用。
pagination分页标签 这个标签负责生成页码导航。它会接收archiveList生成的分页数据,并将其渲染成用户友好的页码链接,包括首页、上一页、下一页和末页等。show:控制分页导航中可见的页码数量,例如show="5"将最多显示5个页码。
实现步骤与示例代码
要将这些标签协同工作,通常遵循以下步骤:
第一步:确定分类ID和模型ID
在安企CMS后台的“内容管理”模块中,你可以查看到每个分类的ID以及内容模型的ID。例如,如果你的“新闻动态”分类ID是 10,并且它属于“文章模型”(模型ID为 1),那么在模板中你就可以使用这些信息。
第二步:使用 archiveList 标签获取文章数据
在你的分类列表页模板(例如 list.html 或 article/list.html)中,可以使用 archiveList 标签来获取文章数据。
{# 假设当前页面是分类列表页,分类ID将自动获取。
如果需要指定特定分类,可设置 categoryId="你的分类ID"。
moduleId通常为文章模型ID,默认为1。
type="page" 开启分页功能,limit="10" 每页显示10篇文章。 #}
{% archiveList archives with type="page" moduleId="1" limit="10" order="id desc" %}
{# 遍历文章列表 #}
{% for item in archives %}
<div class="article-item">
<a href="{{ item.Link }}">
<h3>{{ item.Title }}</h3>
<p>{{ item.Description|truncatechars:100 }}</p> {# 截取文章描述前100个字符 #}
</a>
<div class="meta">
<span>发布时间:{{ stampToDate(item.CreatedTime, "2006-01-02") }}</span>
<span>浏览量:{{ item.Views }}</span>
{# 可以在这里添加文章缩略图等 #}
{% if item.Thumb %}
<img src="{{ item.Thumb }}" alt="{{ item.Title }}" class="article-thumb">
{% endif %}
</div>
</div>
{% empty %}
<p>该分类下暂无文章。</p>
{% endfor %}
{% endarchiveList %}
在上述代码中,我们定义了一个名为 archives 的变量来存储获取到的文章列表。stampToDate 标签用于将时间戳格式化为可读的日期。truncatechars:100 是一个过滤器,用于截取文章描述,保持页面整洁。
第三步:整合分页导航
紧接着 archiveList 标签之后,我们可以使用 pagination 标签来显示分页导航。
{# 分页导航区域 #}
<div class="pagination-container">
{% pagination pages with show="5" %}
<ul>
{# 首页链接 #}
<li class="page-item {% if pages.FirstPage.IsCurrent %}active{% endif %}">
<a href="{{ pages.FirstPage.Link }}">{{ pages.FirstPage.Name }}</a>
</li>
{# 上一页链接 #}
{% if pages.PrevPage %}
<li class="page-item">
<a href="{{ pages.PrevPage.Link }}">{{ pages.PrevPage.Name }}</a>
</li>
{% endif %}
{# 中间页码列表 #}
{% for page_item in pages.Pages %}
<li class="page-item {% if page_item.IsCurrent %}active{% endif %}">
<a href="{{ page_item.Link }}">{{ page_item.Name }}</a>
</li>
{% endfor %}
{# 下一页链接 #}
{% if pages.NextPage %}
<li class="page-item">
<a href="{{ pages.NextPage.Link }}">{{ pages.NextPage.Name }}</a>
</li>
{% endif %}
{# 末页链接 #}
<li class="page-item {% if pages.LastPage.IsCurrent %}active{% endif %}">
<a href="{{ pages.LastPage.Link }}">{{ pages.LastPage.Name }}</a>
</li>
</ul>
<p class="pagination-info">总计 {{ pages.TotalItems }} 篇文章,共 {{ pages.TotalPages }} 页,当前第 {{ pages.CurrentPage }} 页。</p>
{% endpagination %}
</div>
这里,我们定义了一个名为 pages 的变量来接收 archiveList 标签传递过来的分页信息。通过遍历 pages.Pages 可以输出中间的页码,并利用 IsCurrent 属性高亮当前页。FirstPage、PrevPage、NextPage、LastPage 提供了导航的便利性。
完整示例代码
将上述两部分代码结合,便能在安企CMS模板中实现指定分类文章的列表展示和分页功能。
”`twig {# 文章列表区域 #} {% archiveList archives with type=“page” moduleId=“1” limit=“10” order=“id desc” %}
{% for item in archives %}
<div class="article-item">
<a href="{{ item.Link }}">
<h3>{{ item.Title }}</h3>
<p>{{ item.Description|truncatechars:100 }}</p>
</a>
<div class="meta">
<span>发布时间:{{ stampToDate(item.CreatedTime, "2006-01-02") }}</span>
<span>浏览量:{{ item.Views }}</span>
{% if item.Thumb %}
<img src="{{ item.Thumb }}" alt="{{ item.Title }}" class="article-thumb">
{% endif %}
</div>
</div>
{% empty %}
<p>该分类下暂无文章。</p>
{% endfor %}
{% endarchiveList %}
{# 分页导航区域 #}
{% pagination pages with show="5" %}
<ul>
<li class="page
相关文章
如何使用`archiveList`标签在AnQiCMS首页展示最新文章列表?
在AnQiCMS中,网站的首页常常是访客了解网站内容的第一扇窗。如何高效、动态地展示最新的文章,吸引访客持续浏览,是内容运营的关键。AnQiCMS提供了灵活易用的模板标签系统,其中`archiveList`标签就是实现这一目标的核心工具。 ### 理解`archiveList`标签的核心作用 `archiveList`标签是AnQiCMS模板系统中的一个强大工具
2025-11-07AnQiCMS模板如何自定义变量并赋值使用(with/set)?
在AnQiCMS模板中,灵活地自定义和使用变量是实现动态内容和高效模板复用的关键。AnQiCMS的模板语法借鉴了Django和Blade等流行模板引擎的特性,使得变量的定义和赋值直观且强大。本文将深入探讨`with`和`set`这两个标签,帮助您更好地在AnQiCMS模板中自定义变量并加以利用。 ### 一、变量自定义的基石:理解模板语法的核心 在AnQiCMS模板中
2025-11-07如何在AnQiCMS模板中显示当前时间和格式化时间戳?
在网站内容中展示时间,无论是文章发布日期、产品更新时间,还是页面实时加载时间,都能大大提升用户体验和信息的时效性。AnQiCMS作为一个基于Go语言开发的内容管理系统,在模板中处理时间和日期非常直观和灵活。这篇文章将向你介绍如何在AnQiCMS模板中显示当前时间和格式化存储的时间戳。 --- ### 一、在页面上显示当前实时时间 如果你需要在页面上显示用户访问时的实时时间
2025-11-07AnQiCMS模板宏函数(macro)与include标签的适用场景分别是什么?
在 AnQiCMS 的模板开发中,为了提高代码复用性、降低维护成本,我们经常会用到一些强大的模板功能,其中“宏函数(macro)”和“Include 标签”便是两位得力助手。它们各自拥有独特的优势和适用场景,理解并恰当运用,能让模板开发事半功倍,构建出高效、易于维护的网站。 ### 宏函数(Macro):封装可复用的动态逻辑 宏函数在模板开发中,就像编程语言里的函数一样
2025-11-07`archiveDetail`标签在文章详情页有哪些常用字段可以调用?
安企CMS(AnQiCMS)以其灵活性和强大的内容管理能力,为网站运营者提供了极大的便利。当我们精心制作了一篇文章或产品页面,并希望将其丰富多彩的内容准确无误地展示给访客时,`archiveDetail`标签便是我们手中不可或缺的利器。它如同一个信息的宝库,让我们能够轻松地在文章详情页中调用当前内容的所有相关数据。 在文章详情页的模板中,很多时候可以直接通过`{{archive
2025-11-07如何在AnQiCMS文章详情页展示上一篇和下一篇文章链接?
在安企CMS中为文章详情页添加上一篇和下一篇文章的链接,是提升用户阅读体验和网站内部链接结构非常实用的功能。AnQiCMS强大的模板标签系统让实现这一功能变得直观而高效。 ### AnQiCMS 模板机制概览 AnQiCMS 采用类似 Django 的模板引擎语法,这意味着在您的模板文件中,可以通过 `{{变量}}` 来输出内容,通过 `{% 标签 %}` 来调用系统功能或执行逻辑
2025-11-07如何使用`userDetail`标签获取并显示指定用户的ID信息?
AnQiCMS 凭借其灵活强大的模板标签系统,让网站内容的展示变得非常便捷。无论是文章、产品还是用户信息,都能通过简单的标签调用轻松呈现在页面上。今天,我们就来聊聊如何利用 `userDetail` 标签,准确地获取并显示指定用户的 ID 信息。 ### 认识 `userDetail` 标签 在 AnQiCMS 的模板体系中,`userDetail` 标签是专门用于获取网站用户详细数据的工具
2025-11-07在AnQiCMS模板中,如何正确展示用户的`UserName`(用户名)?
在AnQiCMS模板中,灵活地展示用户信息是提升网站个性化和用户体验的关键一环。无论是显示评论发布者的昵称,还是在特定页面展示注册用户的详细信息,理解如何正确调用`UserName`都非常重要。AnQiCMS强大的模板引擎提供了多种途径来实现这一目标,接下来我们将深入探讨这些方法。 AnQiCMS的模板系统采用了类似Django模板引擎的语法,它以简洁高效的方式让开发者能够快速构建页面
2025-11-07