ThinkPHP分页开发:实现类似Google搜索的省略号分页样式

夏静酱_1947

夏静酱_1947

2026-05-30

522人浏览

原创

thinkphp 6 的 render() 方法默认不支持省略号分页,需手动计算页码范围并构造 html:固定首尾页、当前页前后各保留 2 页、边界处理省略号位置,同时用 url::build() 保持完整查询参数。

thinkphp分页开发:实现类似google搜索的省略号分页样式

ThinkPHP 6 的 render() 方法默认不支持省略号,得自己重写

ThinkPHP 6 默认的分页渲染(render())只提供基础的「上一页/下一页 + 全部页码」,没有省略号逻辑。直接调用 $list->render() 拿不到类似 Google 那种 1 2 ... 5 6 7 ... 12 13 的效果——这不是配置能开出来的,必须干预渲染过程。

核心思路是:不依赖默认 HTML 模板,改用 simple() 或 getCursor() 获取原始分页数据,再手写 HTML 结构。TP6 的 $page->items() 和 $page->currentPage() 等方法可用,但页码范围计算得自己来。

手动构造省略号分页的核心逻辑

关键不是“怎么显示”,而是“哪些页码该显示、哪些该省略”。典型策略是:当前页前后各保留 2 个页码,首尾固定显示 1 和总页数,中间用省略号隔开。比如总页数 15、当前页是 7,应显示 1 ... 5 6 7 8 9 ... 15。

用 PHP 实现时注意几个边界:

  • 总页数 ≤ 7 时,全部显示,不出现省略号
  • 当前页靠近开头(如第 1、2 页),右侧省略号要后移,避免出现 1 2 3 ... 4 这种无效省略
  • 当前页靠近结尾(如倒数第 1、2 页),左侧省略号要前移
  • $page->lastPage() 是总页数,$page->currentPage() 是当前页,这两个是计算基础

在模板里用原生 PHP 写分页 HTML(不依赖 render())

推荐在模板中直接写逻辑,清晰可控。假设你已通过 $page = $list->paginate(10) 获取分页对象:

Google SEO GEO Auto Index
Google SEO GEO Auto Index

Google索引API工具。用于提交URL以供Google索引。支持两种模式:“auto-index”(获取sitemap,与缓存对比差异并提交...)

下载
<?php $currentPage = $page->currentPage();
$lastPage = $page->lastPage();
$pages = [];
<p>if ($lastPage  2) $pages[] = '...';
for ($i = max(2, $currentPage - 2); $i </p><p></p><div class="pagination">
<?php foreach ($pages as $p): ?><a href="?page=<?=%20%24p%20===%20'...'%20?%20%24currentPage%20:%20%24p%20?>" class="<?= $p === $currentPage ? 'active' : '' ?>">
= $p ?>
</a>
<?php endforeach; ?>
</div>

注意:?page=... 这种写法仅作示意,实际需用 url() 或 Url::build() 生成带参数的 URL,否则会丢失搜索条件;'...' 是字符串占位符,不能当数字参与链接生成。

容易被忽略的两个坑

一是 URL 参数丢失。分页链接必须携带原始查询参数(如 ?q=thinkphp&type=doc),否则点第二页就只剩 ?page=2。TP6 推荐用 Url::build('', [], false, true) 获取当前完整 URL,再替换 page 参数。

二是移动端适配。省略号分页在小屏上可能折行或溢出,建议给 .pagination a 加 display: inline-block 和最小宽度,对 ... 单独设 user-select: none 防止误选。

真正麻烦的从来不是“怎么画出省略号”,而是“怎么让每个页码链接都带上正确的全部参数”——这个细节没处理好,用户一翻页就丢搜索条件,体验直接归零。

php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!

相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
php文件怎么打开
php文件怎么打开

打开php文件步骤:1、选择文本编辑器;2、在选择的文本编辑器中,创建一个新的文件,并将其保存为.php文件;3、在创建的PHP文件中,编写PHP代码;4、要在本地计算机上运行PHP文件,需要设置一个服务器环境;5、安装服务器环境后,需要将PHP文件放入服务器目录中;6、一旦将PHP文件放入服务器目录中,就可以通过浏览器来运行它。

2023.09.01

10164

6

php怎么取出数组的前几个元素
php怎么取出数组的前几个元素

取出php数组的前几个元素的方法有使用array_slice()函数、使用array_splice()函数、使用循环遍历、使用array_slice()函数和array_values()函数等。本专题为大家提供php数组相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.11

6001

5

php反序列化失败怎么办
php反序列化失败怎么办

php反序列化失败的解决办法检查序列化数据。检查类定义、检查错误日志、更新PHP版本和应用安全措施等。本专题为大家提供php反序列化相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.11

2095

5

php怎么连接mssql数据库
php怎么连接mssql数据库

连接方法:1、通过mssql_系列函数;2、通过sqlsrv_系列函数;3、通过odbc方式连接;4、通过PDO方式;5、通过COM方式连接。想了解php怎么连接mssql数据库的详细内容,可以访问下面的文章。

2023.10.23

3768

4

php连接mssql数据库的方法
php连接mssql数据库的方法

php连接mssql数据库的方法有使用PHP的MSSQL扩展、使用PDO等。想了解更多php连接mssql数据库相关内容,可以阅读本专题下面的文章。

2023.10.23

4474

6

html怎么上传
html怎么上传

html通过使用HTML表单、JavaScript和PHP上传。更多关于html的问题详细请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.03

3511

9

PHP出现乱码怎么解决
PHP出现乱码怎么解决

PHP出现乱码可以通过修改PHP文件头部的字符编码设置、检查PHP文件的编码格式、检查数据库连接设置和检查HTML页面的字符编码设置来解决。更多关于php乱码的问题详情请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.09

4997

8

php文件怎么在手机上打开
php文件怎么在手机上打开

php文件在手机上打开需要在手机上搭建一个能够运行php的服务器环境,并将php文件上传到服务器上。再在手机上的浏览器中输入服务器的IP地址或域名,加上php文件的路径,即可打开php文件并查看其内容。更多关于php相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.13

3922

8

sprintf函数用法详解
sprintf函数用法详解

sprintf函数的用法:1、格式化字符串;2、指定输出宽度和精度;3、返回值。更多关于sprintf函数用法详解的内容,大家可以阅读下面的文章。

2023.11.27

11862

4

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
墨刀帮助中心
墨刀帮助中心

共0课时 | 0人学习

MyEclipse学习中心
MyEclipse学习中心

共0课时 | 0人学习

Apache Subversion 官方手册
Apache Subversion 官方手册

共0课时 | 0人学习