AnQiCMS如何获取指定分类下的文章列表并进行分页?

📅 👁️ 71

在网站内容运营中,我们常常需要展示特定分类下的文章,并为这些列表提供分页功能,以提升用户体验和网站加载效率。安企CMS(AnQiCMS)凭借其灵活的模板引擎和强大的标签系统,能够轻松实现这一需求。

AnQiCMS的模板系统采用了类似Django模板引擎的语法,使用双花括号 {{变量}} 引用变量,以及单花括号加百分号 {% 标签 %} 调用标签。这使得内容展示的定制化变得非常直观。要获取指定分类的文章列表并实现分页,主要会用到两个核心标签:archiveListpagination

核心标签解析

首先,我们来了解一下实现目标所需的两个关键标签:

  1. 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(搜索关键词)等参数,可以根据具体需求灵活运用。
  2. pagination 分页标签 这个标签负责生成页码导航。它会接收 archiveList 生成的分页数据,并将其渲染成用户友好的页码链接,包括首页、上一页、下一页和末页等。

    • show:控制分页导航中可见的页码数量,例如 show="5" 将最多显示5个页码。

实现步骤与示例代码

要将这些标签协同工作,通常遵循以下步骤:

第一步:确定分类ID和模型ID

在安企CMS后台的“内容管理”模块中,你可以查看到每个分类的ID以及内容模型的ID。例如,如果你的“新闻动态”分类ID是 10,并且它属于“文章模型”(模型ID为 1),那么在模板中你就可以使用这些信息。

第二步:使用 archiveList 标签获取文章数据

在你的分类列表页模板(例如 list.htmlarticle/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 属性高亮当前页。FirstPagePrevPageNextPageLastPage 提供了导航的便利性。

完整示例代码

将上述两部分代码结合,便能在安企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-07

AnQiCMS模板如何自定义变量并赋值使用(with/set)?

在AnQiCMS模板中,灵活地自定义和使用变量是实现动态内容和高效模板复用的关键。AnQiCMS的模板语法借鉴了Django和Blade等流行模板引擎的特性,使得变量的定义和赋值直观且强大。本文将深入探讨`with`和`set`这两个标签,帮助您更好地在AnQiCMS模板中自定义变量并加以利用。 ### 一、变量自定义的基石:理解模板语法的核心 在AnQiCMS模板中

2025-11-07

如何在AnQiCMS模板中显示当前时间和格式化时间戳?

在网站内容中展示时间,无论是文章发布日期、产品更新时间,还是页面实时加载时间,都能大大提升用户体验和信息的时效性。AnQiCMS作为一个基于Go语言开发的内容管理系统,在模板中处理时间和日期非常直观和灵活。这篇文章将向你介绍如何在AnQiCMS模板中显示当前时间和格式化存储的时间戳。 --- ### 一、在页面上显示当前实时时间 如果你需要在页面上显示用户访问时的实时时间

2025-11-07

AnQiCMS模板宏函数(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