AnQiCMS如何实现文章列表的分页显示,并自定义分页导航的样式和逻辑?

📅 👁️ 81

AnQiCMS 作为一个高效灵活的内容管理系统,在处理文章列表和分页显示方面提供了直观而强大的功能,让内容呈现既贴合用户需求,又能满足各种自定义场景。如果您正在使用 AnQiCMS 构建网站,并希望实现文章列表的分页功能,同时精细化控制分页导航的样式和逻辑,那么以下内容将为您详细解读其实现方式。

核心功能:文章列表与分页标签的联动

在 AnQiCMS 中,文章列表的分页显示主要依赖于两个核心模板标签的紧密协作:archiveList 用于获取文章数据,而 pagination 则负责生成分页导航。

获取文章列表:archiveList 标签

archiveList 标签是 AnQiCMS 中用于获取各类文档(包括文章、产品等自定义模型内容)的强大工具。要实现分页显示,您需要将 archiveList 标签的 type 参数明确设置为 page。这会告诉系统,您期望它返回分页所需的数据,而不仅仅是固定数量的列表项。

在配置 archiveList 时,一些常用参数可以帮助您精确控制文章的获取逻辑:

  • moduleId:指定您要获取哪个内容模型的文章列表,例如文章模型(moduleId="1")或产品模型等。
  • categoryId:根据分类 ID 获取文章。您可以指定单个分类 ID,也可以用逗号分隔多个 ID。如果希望标签自动识别当前页面的分类 ID,则无需设置此参数;若要完全忽略分类,可以设置为 categoryId="0"
  • limit:这决定了每页显示的文章数量,例如 limit="10" 表示每页显示 10 篇文章。
  • order:控制文章的排序方式,例如按最新发布时间排序 (order="id desc") 或按浏览量排序 (order="views desc")。
  • q:用于搜索功能,当 typepage 时,q 参数会自动从 URL 中读取搜索关键词,从而实现搜索结果的分页。

一个基础的文章列表获取示例,不包含分页导航部分,看起来会是这样:

{# 假设我们正在获取文章模型下的文章列表,每页显示10篇 #}
{% archiveList archives with type="page" moduleId="1" limit="10" order="id desc" %}
    {% for item in archives %}
    <li>
        <a href="{{ item.Link }}">
            <h3>{{ item.Title }}</h3>
            <p>{{ item.Description|truncatechars:100 }}</p>
            <div>
                <span>分类:{% categoryDetail with name="Title" id=item.CategoryId %}</span>
                <span>发布日期:{{ stampToDate(item.CreatedTime, "2006-01-02") }}</span>
                <span>浏览量:{{ item.Views }}</span>
            </div>
        </a>
    </li>
    {% empty %}
    <li>暂无相关文章。</li>
    {% endfor %}
{% endarchiveList %}

构建分页导航:pagination 标签

pagination 标签是 AnQiCMS 用于生成分页导航的专用工具。它会处理复杂的页码计算和链接生成逻辑,您只需在模板中调用并传入由 archiveList 标签(设置为 type="page" 时)生成的 pages 变量即可。

pagination 标签本身支持的参数相对较少,但其内部的 pages 变量包含了丰富的分页信息:

  • show:控制分页导航中最多显示多少个页码按钮,例如 show="5" 会显示当前页附近的最多 5 个页码。
  • pages.TotalItems:总的文章数量。
  • pages.TotalPages:总的页码数量。
  • pages.CurrentPage:当前访问的页码。
  • pages.FirstPagepages.LastPagepages.PrevPagepages.NextPage:这些是对象,分别代表首页、末页、上一页和下一页的链接信息,包括 Name(链接文本)和 Link(链接地址),以及 IsCurrent(是否为当前页)。
  • pages.Pages:一个包含中间页码列表的数组,每个元素也是一个对象,包含 NameLinkIsCurrent

一个基础的分页导航生成示例,它会生成页码链接:

<div class="pagination">
    {% 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 item in pages.Pages %}
            <li class="page-item {% if item.IsCurrent %}active{% endif %}">
                <a href="{{ item.Link }}">{{ 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>
    {% endpagination %}
</div>

组合与自定义:实现完整的文章列表分页

archiveListpagination 这两个标签组合起来,并结合 HTML 结构和 CSS 样式,就能实现一个完整且可定制的文章列表分页功能。通常,这些代码会放在您的列表模板文件(如 archive/list.html)中。

以下是一个将文章列表和分页导航结合的完整示例,展示了如何组织 HTML 结构并利用 IsCurrent 属性来高亮当前页码:

”`twig

<ul class="article-items">
    {# 使用 archiveList 获取文章数据,并指定为分页类型 #}
    {% archiveList archives with type="page" moduleId="1" limit="10" order="id desc" %}
        {% for item in archives %}
        <li class="article-item">
            <a href="{{ item.Link }}" class="article-link">
                {% if item.Thumb %}<img src="{{ item.Thumb }}" alt="{{ item.Title }}" class="article-thumb">{% endif %}
                <div class="article-info">
                    <h3 class="article-title">{{ item.Title }}</h3>
                    <p class="article-description">{{ item.Description|truncatechars:150 }}</p>
                    <div class="article-meta">
                        <span class="category">分类:{% categoryDetail with name="Title" id=item.CategoryId %}</span>
                        <span class="date">发布日期:{{ stampToDate(item.CreatedTime, "2006-01-02") }}</span>
                        <span class="views">浏览量:{{ item.Views }}</span>
                    </div>
                </div>
            </a>
        </li>
        {% empty %}
        <li class="no-content">很抱歉,当前分类或搜索条件下暂无文章内容。</li>
        {% endfor %}
    {% endarchiveList %}
</ul>

{# 分页导航区域 #}
<nav class="pagination-nav">
    {% pagination pages with show="7" %} {# 设置最多显示 7 个页码按钮 #}
        <ul class="pagination-list">
            {# 显示总页数和总条目数,方便用户了解列表规模 #}
            <li class="page-info">共 {{ pages.TotalPages }} 页 / {{ pages.TotalItems }} 条</li>

            {# 首页链接,如果当前是首页则添加 active 类 #}
            <li class="page-item {% if pages.FirstPage.IsCurrent %}active{% endif %}">
                <a href="{{ pages.FirstPage.Link }}" class="page-link">{{ pages.FirstPage.Name }}</a>
            </li>
            {# 上一页链接,仅当存在上一页时显示 #}
            {% if pages.PrevPage %}
            <li class="page-item">
                <a href="{{ pages.PrevPage.Link }}" class="page-link">{{ pages.PrevPage.Name }}</a>
            </li>
            {% endif %}
            {# 中间页码链接,遍历 pages.Pages 数组 #}

相关文章

如何在前端显示文章列表,并支持按内容模型、分类、推荐属性等多种条件筛选?

安企CMS为网站内容提供了极高的灵活性,无论是展示文章、产品还是其他自定义内容,都能轻松应对。当我们需要在网站前端显示一个内容列表,并且允许用户根据内容模型、分类、推荐属性等多种条件进行筛选时,安企CMS提供了非常直观且强大的模板标签来实现这些功能。 灵活定制内容的列表展示,不仅能提升用户体验,还能有效帮助访问者快速找到他们感兴趣的信息。在安企CMS中

2025-11-08

AnQiCMS的内容模型自定义字段如何在前端模板中被灵活调用和显示?

在AnQiCMS中,内容模型的自定义字段为我们的网站内容管理带来了极大的灵活性,它允许我们根据不同业务需求,为文章、产品、活动等内容类型添加独有的属性。但仅仅在后台创建这些字段是不够的,如何将它们灵活地呈现在网站前端,让访客看到这些定制化的信息,才是内容运营的关键。 接下来,我们将深入探讨AnQiCMS的内容模型自定义字段如何在前端模板中被灵活调用和显示,帮助您充分利用这一强大功能。 ###

2025-11-08

如何为分类页面设置Banner图和缩略图,并在前端进行轮播或列表展示?

在网站运营中,为分类页面添加吸引人的视觉元素,比如Banner图和缩略图,是提升用户体验和网站专业度的重要一步。安企CMS(AnQiCMS)作为一个高效、灵活的内容管理系统,充分考虑了这些需求,让您可以轻松地为分类页面设置并展示这些图片。 本文将引导您如何在安企CMS后台为分类页面配置Banner图和缩略图,并分享在网站前端模板中将它们轮播或列表展示的实用方法。 --- ### 第一步

2025-11-08

分类页面如何自定义SEO标题、关键词、描述和URL显示,以优化分类页表现?

在网站运营中,分类页面扮演着至关重要的角色,它们不仅是用户浏览内容、探索网站结构的关键入口,更是搜索引擎理解网站主题、分配权重的核心节点。有效优化分类页面的SEO表现,能够显著提升网站的整体可见度和用户体验。安企CMS(AnQiCMS)为用户提供了强大而灵活的工具,让分类页面的SEO标题、关键词、描述和URL结构可以得到细致的自定义和优化。 ### 一、分类页SEO

2025-11-08

图片资源管理在AnQiCMS中如何影响前端图片的显示质量和加载速度?

在运营网站的过程中,图片扮演着至关重要的角色。它们不仅是内容呈现的一部分,更是影响用户体验和网站性能的关键因素。安企CMS(AnQiCMS)在图片资源管理方面提供了一系列实用的功能,这些功能直接关系到我们网站前端图片的显示质量和加载速度。深入了解并善用这些工具,能帮助我们构建一个既美观又高效的网站。 ### 为什么图片管理对网站至关重要? 网站的加载速度是用户体验的基石

2025-11-08

如何为单页面(如“关于我们”、“联系我们”)配置独立的模板、SEO信息和内容显示?

在运营网站时,一些看似简单的单页面,如“关于我们”、“联系我们”或“服务条款”,它们承载着网站的品牌形象、信任背书和用户转化入口。为这些页面精心设计独立的视觉风格、优化其搜索引擎(SEO)信息并灵活展示内容,是提升用户体验和网站专业度的关键。AnQiCMS 提供了强大且灵活的功能,让您能够轻松实现这些需求。 ### 核心功能:为单页面定制专属体验 首先,我们来了解如何在 AnQiCMS

2025-11-08

AnQiCMS如何设置并显示网站的全局联系方式(电话、地址、邮箱、社交媒体等)?

在网站运营中,清晰、便捷的联系方式是构建信任、促进沟通的关键。无论是电话、地址、邮箱,还是日益重要的社交媒体渠道,这些信息都需要在您的网站上醒目且一致地展示。AnQiCMS深知这一点,因此提供了一个直观且集中的方式来管理网站的全局联系信息,让您的访客无论何时何地都能轻松找到您。 ### 在AnQiCMS后台设置您的全局联系信息 AnQiCMS将联系方式的设置集中在一处,方便您统一管理和更新

2025-11-08

如何自定义网站导航菜单,并控制其在网站不同位置的显示顺序和层级关系?

网站导航是用户浏览网站的地图,它不仅引导用户找到所需信息,更是网站结构和用户体验的集中体现。在安企CMS中,自定义和管理网站的导航菜单,包括它们的显示顺序和层级关系,是一项灵活且高效的操作。无论是为了优化用户体验,还是为了更好地支持内容营销和SEO策略,安企CMS都提供了强大而直观的工具。 接下来,我们将一起探索如何在安企CMS中精细化定制你的网站导航。 ### 一、后台操作

2025-11-08