• TP5之自定义分页样式


    1. 分页样式为
    2. 在extend目录下创建page目录,在page目录下创建Page.php文件,将以下代码放入文件中。
    3.   1 <?php
        2 namespace page;
        3 
        4 use thinkPaginator;
        5 
        6 class Page extends Paginator
        7 {
        8 
        9     //首页
       10     protected function home() {
       11         if ($this->currentPage() > 1) {
       12             return "<a href='" . $this->url(1) . "' title='首页'>首页</a>";
       13         } else {
       14             return "<p>首页</p>";
       15         }
       16     }
       17 
       18     //上一页
       19     protected function prev() {
       20         if ($this->currentPage() > 1) {
       21             return "<a href='" . $this->url($this->currentPage - 1) . "' title='上一页'>上一页</a>";
       22         } else {
       23             return "<p>上一页</p>";
       24         }
       25     }
       26 
       27     //下一页
       28     protected function next() {
       29         if ($this->hasMore) {
       30             return "<a href='" . $this->url($this->currentPage + 1) . "' title='下一页'>下一页</a>";
       31         } else {
       32             return"<p>下一页</p>";
       33         }
       34     }
       35 
       36     //尾页
       37     protected function last() {
       38         if ($this->hasMore) {
       39             return "<a href='" . $this->url($this->lastPage) . "' title='尾页'>尾页</a>";
       40         } else {
       41             return "<p>尾页</p>";
       42         }
       43     }
       44 
       45     //统计信息
       46     protected function info(){
       47         return "<p class='pageRemark'>共<b>" . $this->lastPage .
       48             "</b>页<b>" . $this->total . "</b>条数据</p>";
       49     }
       50 
       51     /**
       52      * 页码按钮
       53      * @return string
       54      */
       55     protected function getLinks()
       56     {
       57 
       58         $block = [
       59             'first'  => null,
       60             'slider' => null,
       61             'last'   => null
       62         ];
       63 
       64         $side   = 3;
       65         $window = $side * 2;
       66 
       67         if ($this->lastPage < $window + 6) {
       68             $block['first'] = $this->getUrlRange(1, $this->lastPage);
       69         } elseif ($this->currentPage <= $window) {
       70             $block['first'] = $this->getUrlRange(1, $window + 2);
       71             $block['last']  = $this->getUrlRange($this->lastPage - 1, $this->lastPage);
       72         } elseif ($this->currentPage > ($this->lastPage - $window)) {
       73             $block['first'] = $this->getUrlRange(1, 2);
       74             $block['last']  = $this->getUrlRange($this->lastPage - ($window + 2), $this->lastPage);
       75         } else {
       76             $block['first']  = $this->getUrlRange(1, 2);
       77             $block['slider'] = $this->getUrlRange($this->currentPage - $side, $this->currentPage + $side);
       78             $block['last']   = $this->getUrlRange($this->lastPage - 1, $this->lastPage);
       79         }
       80 
       81         $html = '';
       82 
       83         if (is_array($block['first'])) {
       84             $html .= $this->getUrlLinks($block['first']);
       85         }
       86 
       87         if (is_array($block['slider'])) {
       88             $html .= $this->getDots();
       89             $html .= $this->getUrlLinks($block['slider']);
       90         }
       91 
       92         if (is_array($block['last'])) {
       93             $html .= $this->getDots();
       94             $html .= $this->getUrlLinks($block['last']);
       95         }
       96 
       97         return $html;
       98     }
       99 
      100     /**
      101      * 渲染分页html
      102      * @return mixed
      103      */
      104     public function render()
      105     {
      106         if ($this->hasPages()) {
      107             if ($this->simple) {
      108                 return sprintf(
      109                     '%s<div class="pagination">%s %s %s</div>',
      110                     $this->css(),
      111                     $this->prev(),
      112                     $this->getLinks(),
      113                     $this->next()
      114                 );
      115             } else {
      116                 return sprintf(
      117                     '%s<div class="pagination">%s %s %s %s %s %s</div>',
      118                     $this->css(),
      119                     $this->home(),
      120                     $this->prev(),
      121                     $this->getLinks(),
      122                     $this->next(),
      123                     $this->last(),
      124                     $this->info()
      125                 );
      126             }
      127         }
      128     }
      129 
      130     /**
      131      * 生成一个可点击的按钮
      132      *
      133      * @param  string $url
      134      * @param  int    $page
      135      * @return string
      136      */
      137     protected function getAvailablePageWrapper($url, $page)
      138     {
      139         return '<a href="' . htmlentities($url) . '" title="第"'. $page .'"页" >' . $page . '</a>';
      140     }
      141 
      142     /**
      143      * 生成一个禁用的按钮
      144      *
      145      * @param  string $text
      146      * @return string
      147      */
      148     protected function getDisabledTextWrapper($text)
      149     {
      150         return '<p class="pageEllipsis">' . $text . '</p>';
      151     }
      152 
      153     /**
      154      * 生成一个激活的按钮
      155      *
      156      * @param  string $text
      157      * @return string
      158      */
      159     protected function getActivePageWrapper($text)
      160     {
      161         return '<a href="" class="cur">' . $text . '</a>';
      162     }
      163 
      164     /**
      165      * 生成省略号按钮
      166      *
      167      * @return string
      168      */
      169     protected function getDots()
      170     {
      171         return $this->getDisabledTextWrapper('...');
      172     }
      173 
      174     /**
      175      * 批量生成页码按钮.
      176      *
      177      * @param  array $urls
      178      * @return string
      179      */
      180     protected function getUrlLinks(array $urls)
      181     {
      182         $html = '';
      183 
      184         foreach ($urls as $page => $url) {
      185             $html .= $this->getPageLinkWrapper($url, $page);
      186         }
      187 
      188         return $html;
      189     }
      190 
      191     /**
      192      * 生成普通页码按钮
      193      *
      194      * @param  string $url
      195      * @param  int    $page
      196      * @return string
      197      */
      198     protected function getPageLinkWrapper($url, $page)
      199     {
      200         if ($page == $this->currentPage()) {
      201             return $this->getActivePageWrapper($page);
      202         }
      203 
      204         return $this->getAvailablePageWrapper($url, $page);
      205     }
      206 
      207     /**
      208      * 分页样式
      209      */
      210     protected function css(){
      211         return '  <style type="text/css">
      212             .pagination p{
      213                 margin:0;
      214                 cursor:pointer
      215             }
      216             .pagination{
      217                 height:40px;
      218                 padding:20px 0px;
      219             }
      220             .pagination a{
      221                 display:block;
      222                 float:left;
      223                 margin-right:10px;
      224                 padding:2px 12px;
      225                 height:24px;
      226                 border:1px #cccccc solid;
      227                 background:#fff;
      228                 text-decoration:none;
      229                 color:#808080;
      230                 font-size:12px;
      231                 line-height:24px;
      232             }
      233             .pagination a:hover{
      234                 color:#077ee3;
      235                 background: white;
      236                 border:1px #077ee3 solid;
      237             }
      238             .pagination a.cur{
      239                 border:none;
      240                 background:#077ee3;
      241                 color:#fff;
      242             }
      243             .pagination p{
      244                 float:left;
      245                 padding:2px 12px;
      246                 font-size:12px;
      247                 height:24px;
      248                 line-height:24px;
      249                 color:#bbb;
      250                 border:1px #ccc solid;
      251                 background:#fcfcfc;
      252                 margin-right:8px;
      253 
      254             }
      255             .pagination p.pageRemark{
      256                 border-style:none;
      257                 background:none;
      258                 margin-right:0px;
      259                 padding:4px 0px;
      260                 color:#666;
      261             }
      262             .pagination p.pageRemark b{
      263                 color:red;
      264             }
      265             .pagination p.pageEllipsis{
      266                 border-style:none;
      267                 background:none;
      268                 padding:4px 0px;
      269                 color:#808080;
      270             }
      271             .dates li {font-size: 14px;margin:20px 0}
      272             .dates li span{float:right}
      273         </style>';
      274     }
      275 }

      修改  applicationconfig.php  中的配置文件即可

    1 //分页配置  
    2     'paginate'               => [  
    3         'type'      => 'pagePage',//分页类  
    4         'var_page'  => 'page',  
    5         'list_rows' => 15,  
    6     ],

    over!over!over!

    let the world have no hard-to-write code ^-^
  • 相关阅读:
    HDU3336 Count the string —— KMP next数组
    CodeForces
    51Nod 1627 瞬间移动 —— 组合数学
    51Nod 1158 全是1的最大子矩阵 —— 预处理 + 暴力枚举 or 单调栈
    51Nod 1225 余数之和 —— 分区枚举
    51Nod 1084 矩阵取数问题 V2 —— 最小费用最大流 or 多线程DP
    51Nod 机器人走方格 V3 —— 卡特兰数、Lucas定理
    51Nod XOR key —— 区间最大异或值 可持久化字典树
    HDU4825 Xor Sum —— Trie树
    51Nod 1515 明辨是非 —— 并查集 + 启发式合并
  • 原文地址:https://www.cnblogs.com/ovim/p/10580265.html
Copyright © 2020-2023  润新知