如何对文章列表进行分页显示,并自定义分页导航的样式和页码数量?

📅 👁️ 92

在网站内容日益丰富的今天,如何高效地展示大量文章,同时确保用户浏览体验的流畅性,是每一个网站运营者需要思考的问题。安企CMS(AnQiCMS)提供了强大且灵活的文章列表分页功能,不仅能帮助网站优化内容呈现,还能通过自定义样式和页码数量,更好地融入网站整体设计,提升用户交互体验。

接下来,我们将深入探讨如何在安企CMS中实现文章列表的分页显示,并详细讲解如何根据您的需求自定义分页导航的样式和页码数量。


一、实现文章列表的分页显示

在安企CMS中,要对文章列表进行分页显示,核心在于使用模板标签 archiveList 来获取数据,并指定其为分页模式。

首先,您需要在模板文件中(通常是列表页模板,如 {模型table}/list.html 或自定义的列表模板)使用 archiveList 标签来检索文章数据。这个标签非常灵活,可以根据分类ID、模型ID、推荐属性等多种条件来筛选文章。

关键在于为 archiveList 标签设置 type="page" 参数。一旦设置了这个参数,安企CMS就会自动处理当前页面的分页逻辑,根据您指定的 limit 参数(每页显示的文章数量)来返回当前页的文章数据。

例如,如果您想在当前分类下显示每页10篇文章,可以这样编写代码:

{% archiveList archives with type="page" limit="10" %}
    {% for item in archives %}
    <div class="article-item">
        <a href="{{item.Link}}">
            <h4>{{item.Title}}</h4>
            <p>{{item.Description}}</p>
            <div class="meta">
                <span>分类:{% categoryDetail with name="Title" id=item.CategoryId %}</span>
                <span>发布日期:{{stampToDate(item.CreatedTime, "2006-01-02")}}</span>
                <span>阅读量:{{item.Views}}</span>
            </div>
        </a>
        {% if item.Thumb %}
        <a href="{{item.Link}}">
            <img src="{{item.Thumb}}" alt="{{item.Title}}">
        </a>
        {% endif %}
    </div>
    {% empty %}
    <p>抱歉,当前分类暂无文章。</p>
    {% endfor %}
{% endarchiveList %}

在这段代码中:

  • archiveList archives with type="page" limit="10" 会获取当前页码对应的10篇文章,并将结果存储在 archives 变量中。
  • {% for item in archives %} 循环遍历这些文章,item 变量包含了每篇文章的详细信息,如标题 (item.Title)、链接 (item.Link)、描述 (item.Description) 等。
  • {% empty %} 块用于在没有任何文章数据时显示一条友好提示,避免页面空白。

通过这种方式,您已经成功地让文章列表进入了分页模式。接下来,我们需要为用户提供导航到不同页码的工具。


二、渲染分页导航

文章列表数据准备好后,就需要使用 pagination 标签来生成并显示分页导航。pagination 标签通常紧随 archiveList 标签之后使用,它会根据 archiveList 提供的分页信息,自动生成页码链接和导航按钮。

pagination 标签会将分页数据组织成一个 pages 对象,这个对象包含了当前分页状态的各种有用信息,如总文章数、总页数、当前页码、首页链接、上一页链接、下一页链接、尾页链接以及一个包含所有可见页码的数组。

一个基础的分页导航实现可能看起来像这样:

<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 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>
    <p>总共有 {{pages.TotalItems}} 篇文章,分为 {{pages.TotalPages}} 页,当前在第 {{pages.CurrentPage}} 页。</p>
    {% endpagination %}
</div>

在这段代码中:

  • {% pagination pages with show="5" %} 告诉系统生成分页导航,并将分页数据存储在 pages 变量中。show="5" 参数在这里起到了关键作用,它表示在页码列表中,除了首页、尾页、上一页、下一页按钮外,最多只显示5个中间页码(例如,当总页数很多时,会显示 1...3 4 5 6 7...100)。
  • pages.FirstPagepages.PrevPagepages.NextPagepages.LastPage 分别代表首页、上一页、下一页和尾页的对象,它们的 Link 属性提供了对应的链接,Name 属性提供了按钮文本。
  • pages.Pages 是一个数组,包含了中间的页码项。通过 {% for item in pages.Pages %} 循环遍历,item.Link 提供页码链接,item.Name 提供页码数字。
  • item.IsCurrentpages.FirstPage.IsCurrent 等布尔值可以判断当前页码是否为当前正在浏览的页面,这对于高亮显示当前页码至关重要。

三、自定义分页导航的样式和页码数量

安企CMS的分页标签提供了足够的灵活性,让您可以通过控制标签参数和搭配CSS来实现完全自定义的样式。

1. 自定义页码数量: 如前所述,pagination 标签的 show 参数直接控制了中间页码按钮的数量。

  • show="5":最多显示5个中间页码。
  • show="7":最多显示7个中间页码。 您可以根据页面布局的宽度、用户习惯等因素,调整这个数值,以达到**显示效果。如果省略 show 参数,系统会有一个默认值,但为了精确控制,建议明确设置。

2. 自定义分页导航样式: 通过在HTML结构中添加自定义的CSS类,您可以完全掌控分页导航的视觉呈现。

在上面的示例中,我们使用了 pagination-containerpage-itemactive 等类名。您可以在您的CSS文件中为这些类编写样式规则,例如:

/* pagination-container 整体布局 */
.pagination-container {
    margin-top: 30px;
    text-align: center;
}

.pagination-container ul {
    list-style: none;
    padding: 0;
    display: inline-flex; /* 使页码水平排列 */
    margin: 0;
}

/* page-item 单个页码或按钮 */
.page-item {
    margin: 0 5px; /* 页码间距 */
}

.page-item a {
    display: block;
    padding: 8px 12px;
    border: 1px solid #ddd;
    color: #333;
    text-decoration: none;
    border-radius: 4px;
    transition: background-color 0.3s ease;
}

.page-item a:hover {
    background-color: #f5f5f5;
    color: #007bff;
    border-color: #007bff;
}

/* active 当前页高亮 */
.page-item.active a {
    background-color: #007bff;
    color: white;
    border-color: #007bff;
    pointer-events: none; /* 禁用当前页的点击事件 */
}

/* 隐藏不必要的文字(如首页/尾页按钮的默认文本在某些设计中可能不显示) */
.page-item:first-child a,
.page-item:last-child a {
    font-weight: bold;
}

通过修改这些CSS规则,您可以改变分页按钮的背景色、文字颜色、边框、圆角、大小,甚至添加动画效果等,使其完美匹配您的网站设计风格。


四、进阶技巧与注意事项

  • 搜索结果的分页: archiveList 标签的 q 参数在 type="page" 模式下同样生效。这意味着,如果您在搜索结果页使用该标签,它会自动识别URL中的搜索关键词 q,并

相关文章

如何获取并显示网站首页配置的Banner轮播图列表?

在安企CMS中,网站首页的Banner轮播图是吸引访客目光、展示核心内容的重要元素。正确地获取并展示这些Banner图,能极大提升网站的视觉效果和用户体验。安企CMS提供了直观的功能和灵活的模板标签,让我们可以轻松实现这一目标。 ### 第一步:在后台配置您的Banner轮播图 在开始在网站前端展示Banner之前,我们首先需要在安企CMS的后台管理系统中进行配置。通常

2025-11-08

如何在AnQiCMS模板中获取并循环输出网站的友情链接列表?

在网站运营中,友情链接是提升网站权重、增加外部引流和促进合作关系的重要手段。一个管理便捷、展示灵活的友情链接功能对于任何内容管理系统都至关重要。AnQiCMS作为一个高效的内容管理系统,提供了直观的方式来管理和在模板中获取友情链接列表。 本文将详细介绍如何在AnQiCMS模板中获取并循环输出网站的友情链接列表,帮助您轻松实现网站间的互联互通。 ###

2025-11-08

如何获取某个独立页面的完整内容、SEO信息和关联图片?

在日常的网站运营中,独立页面如“关于我们”、“联系方式”等,承担着传递核心信息、塑造品牌形象的重要职责。作为内容运营者,我们经常需要深入了解这些页面的构成,包括其主体内容、搜索引擎优化(SEO)信息以及所有关联的图片资源,以便进行精细化管理、优化迭代或灵活的页面布局。安企CMS(AnQiCMS)提供了一套直观而强大的模板标签系统,让获取这些页面数据变得轻而易举。 ###

2025-11-08

如何在AnQiCMS模板中获取并循环输出所有独立页面(如关于我们)?

在安企CMS中,有时我们需要在网站的导航栏、页脚或其他特定区域列出一些独立页面,例如“关于我们”、“联系我们”、“隐私政策”等。这些页面通常内容相对固定,不属于某个特定分类或文章模型,AnQiCMS 将它们称为“单页面”。幸运的是,AnQiCMS 提供了一个非常直观且强大的模板标签,可以轻松获取并循环输出这些单页面的信息。 ### 核心标签

2025-11-08

如何在页面标题(Title)中动态地添加网站名称后缀或自定义分隔符?

网页标题(Title)是网站在搜索引擎结果页面的“门面”,它不仅能直观地告诉用户页面内容,也是搜索引擎评估页面相关性和权威性的重要指标。一个优化得当的页面标题,能够显著提升点击率和网站的搜索引擎排名。在 AnQiCMS 中,您可以非常灵活地控制页面标题的生成方式,尤其是动态添加网站名称后缀和自定义分隔符,以实现统一的品牌形象和更好的 SEO 效果。 ### AnQiCMS 中的 TDK

2025-11-08

如何在文章列表页面实现通过URL参数(如`q=关键词`)进行搜索并显示结果?

在网站内容运营中,为用户提供便捷、精准的内容查找体验至关重要。当网站文章数量不断增长时,一个实用的搜索功能能够极大地提升用户满意度和内容触达效率。AnqiCMS作为一款高效的内容管理系统,提供了灵活的方式来实现文章列表页面的URL参数搜索功能,让访客通过在URL中附加`q=关键词`等参数,就能直接检索并查看相关内容。 本文将详细介绍如何在AnqiCMS中配置此功能,帮助您优化网站内容检索

2025-11-08

如何在文章列表页结合自定义参数(如“区域”、“户型”)进行多条件筛选?

在安企CMS中,要在文章列表页实现多条件筛选,例如根据“区域”、“户型”等自定义参数进行筛选,这需要我们巧妙地结合系统提供的“内容模型”功能,以及前端模板的“文档参数筛选标签”(`archiveFilters`)和“文档列表标签”(`archiveList`)。整个过程可以分为几个核心步骤,让我们一起来详细了解。 ### 核心功能:自定义内容模型与参数 实现多条件筛选的基础

2025-11-08

除了`stampToDate`,还有哪些过滤器可以将时间值格式化为指定日期格式?

在安企CMS的模板开发中,我们经常需要将数据库中存储的时间值,比如文章的发布时间、更新时间,以我们期望的日期和时间格式展示出来。`stampToDate`过滤器无疑是其中最常用且功能强大的工具,它能将Unix时间戳灵活地转换为各种日期格式。但除了这个‘万金油’,安企CMS还提供了其他几种同样高效、实用的时间格式化方法,它们在不同场景下各有所长,能够帮助我们更精细、更便捷地处理时间数据的展示

2025-11-08