TP5分页样式修改

 

基础的分页调用

  1. /**
  2. *  控制器部分代码
  3.  */
  4. //实例化模型
  5. $areasModel=new Areas();
  6. //分页数据集
  7. $listarea=$areasModel->paginate($page);
  8. //分页显示输出
  9. $page=$listarea->render();
  10. //模板赋值
  11. $this->assign('listarea',$listarea);
  12. $this->assign('page', $page);
  13.  
  14. /**
  15. *  模板页面部分代码
  16.  */
  17. {$page}//分页输出
  18. {$listarea->total()}//数据总数
  19. {$listarea->lastPage()}//总页数
  20. {$listarea->currentPage()}//当前页

分页类修改,写了三个样式;

  1. public $rollPage=5;//分页栏每页显示的页数
  2. public $showPage=12;//总页数超过多少条时显示的首页末页
  3.  
  4. /**
  5.  * 分页样式一:首页末页不管何时都显示
  6.  * 
  7.  * 分页样式二:前n页时不显示首页,后n页时不显示末页;n=分页栏数/2(向下取整)
  8.  */
  9.  
  10. //样式1和样式2核心代码
  11.  
  12. /**
  13.      * 页码按钮
  14.      * @return string
  15.      */
  16.     protected function getLinks()
  17.     {
  18.         if ($this->simple)
  19.             return '';
  20.  
  21.         $block = [
  22.             'first'  => null,
  23.             'slider' => null,
  24.             'last'   => null
  25.         ];
  26.  
  27.         $rollPage = $this->rollPage;//分页栏每页显示的页数
  28.         $nowPage = floor($rollPage/2);//计算分页临时变量
  29.         
  30.         if($this->lastPage <= $rollPage){
  31.             $block['first'] = $this->getUrlRange(1, $this->lastPage);
  32.         }else if($this->currentPage <= $nowPage){
  33.             $block['first'] = $this->getUrlRange(1, $rollPage);
  34.         }else if($this->currentPage >= ($this->lastPage - $nowPage)){
  35.             $block['first'] = $this->getUrlRange($this->lastPage - $rollPage+1, $this->lastPage);
  36.         }else{
  37.             $block['first'] = $this->getUrlRange($this->currentPage - $nowPage, $this->currentPage + $nowPage);
  38.         }
  39.         $html = '';
  40.  
  41.         if (is_array($block['first'])) {
  42.             $html .= $this->getUrlLinks($block['first']);
  43.         }
  44.  
  45.         return $html;
  46.     }
  47.  
  48. /**
  49.  * 分页样式三
  50.  * 按照段分页,具体的效果可以自己下载代码
  51.  * 
  52.  * 例1:1-5,4-8,7-11,...
  53.  * 在第一段时:点击5时跳到下一段
  54.  * 在第二段时:点击8时跳到下一段,点击4时回到上一段
  55.  * 
  56.  * 例2:1-7,6-12,11-17,...
  57.  * 在第二段时:点击12时跳到下一段点击6时回到上一段
  58.  * 在第三段时:点击17时跳到下一段,点击11时回到上一段
  59.  * 
  60.  */
  61.  
  62. //核心代码
  63.  
  64. /**
  65.      * 页码按钮
  66.      * @return string
  67.      */
  68.     protected function getLinks()
  69.     {
  70.         if ($this->simple)
  71.             return '';
  72.  
  73.         $block = [
  74.             'first'  => null,
  75.             'slider' => null,
  76.             'last'   => null
  77.         ];
  78.  
  79.         $rollPage = $this->rollPage;//分页栏每页显示的页数
  80.         $nowPage = floor($rollPage/2);//计算分页临时变量
  81.         
  82.         if($this->lastPage <= $rollPage){
  83.             $block['first'] = $this->getUrlRange(1, $this->lastPage);
  84.         }else if($this->currentPage==0 || $this->currentPage<$rollPage){
  85.             $block['first'] = $this->getUrlRange(1, $rollPage);
  86.         }else{
  87.             $n=floor(($this->currentPage+($rollPage-4))/($rollPage-2));
  88.             $start=$n*($rollPage-2)-($rollPage-3);
  89.             $end=$start+$rollPage-1;
  90.             $end=$end>$this->lastPage ? $this->lastPage : $end;
  91.             $block['first'] = $this->getUrlRange($start,$end);
  92.         }
  93.         $html = '';
  94.  
  95.         if (is_array($block['first'])) {
  96.             $html .= $this->getUrlLinks($block['first']);
  97.         }
  98.  
  99.         return $html;
  100.     }

 

TP5分页样式修改

用法:将文件复制到 thinkphp/library/think/paginator/driver/ 目录下面,
用哪个样式就将配置文件里面的type改成对应的样式就行了;
例如:'type' => 'bootstrap5',
bootstrap下载地址:https://www.yinhoujie.cn/other/bootstrap.zip