一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - PHP教程 - thinkPHP3.2實現分頁自定義樣式的方法

thinkPHP3.2實現分頁自定義樣式的方法

2019-10-26 15:24谷文杰 PHP教程

這篇文章主要介紹了thinkPHP3.2實現分頁自定義樣式的方法,結合實例形式分析了thinkPHP3.2針對底層框架代碼的修改與使用相關操作技巧,需要的朋友可以參考下

本文實例講述了thinkPHP3.2實現分頁自定義樣式的方法。分享給大家供大家參考,具體如下:

下面是一個Tp3.2的自定義分頁,這個方法也是在看過一個網友的博客之后受到啟發這么寫的。經過了一些修改,大家在看到代碼之后也可以進行修改自定義樣式;

主要的樣式控制文件就是page.css,框架底層的分頁類可以直接進行粘貼復制使用;

1. 框架底層的page.class.php 路徑( Engine\Library\Think)

其實這個文件不需要過多修改,也可以直接使用官方的就行;下面是我現在用的,稍作了修改;

  1. <?php 
  2. namespace Think; 
  3. class Page{ 
  4.   public $firstRow; // 起始行數 
  5.   public $listRows; // 列表每頁顯示行數 
  6.   public $parameter; // 分頁跳轉時要帶的參數 
  7.   public $totalRows; // 總行數 
  8.   public $totalPages; // 分頁總頁面數 
  9.   public $rollPage  = 11;// 分頁欄每頁顯示的頁數 
  10.   public $lastSuffix = true// 最后一頁是否顯示總頁數 
  11.   private $p    = 'p'//分頁參數名 
  12.   private $url   = ''//當前鏈接URL 
  13.   private $nowPage = 1; 
  14.   // 分頁顯示定制 
  15.   private $config = array( 
  16.     'header' => '<span class="rows">共 %TOTAL_ROW% 條記錄</span>'
  17.     'prev'  => '<<'
  18.     'next'  => '>>'
  19.     'first' => '1...'
  20.     'last'  => '...%TOTAL_PAGE%'
  21.     'theme' => '%FIRST% %UP_PAGE% %LINK_PAGE% %DOWN_PAGE% %END%'
  22.   ); 
  23.   /** 
  24.    * 架構函數 
  25.    * @param array $totalRows 總的記錄數 
  26.    * @param array $listRows 每頁顯示記錄數 
  27.    * @param array $parameter 分頁跳轉的參數 
  28.    */ 
  29.   public function __construct($totalRows, $listRows=20, $parameter = array()) { 
  30.     C('VAR_PAGE') && $this->p = C('VAR_PAGE'); //設置分頁參數名稱 
  31.     /* 基礎設置 */ 
  32.     $this->totalRows = $totalRows; //設置總記錄數 
  33.     $this->listRows  = $listRows; //設置每頁顯示行數 
  34.     $this->parameter = empty($parameter) ? $_GET : $parameter; 
  35.     $this->nowPage  = empty($_GET[$this->p]) ? 1 : intval($_GET[$this->p]); 
  36.     $this->firstRow  = $this->listRows * ($this->nowPage - 1); 
  37.   } 
  38.   /** 
  39.    * 定制分頁鏈接設置 
  40.    * @param string $name 設置名稱 
  41.    * @param string $value 設置值 
  42.    */ 
  43.   public function setConfig($name,$value) { 
  44.     if(isset($this->config[$name])) { 
  45.       $this->config[$name] = $value; 
  46.     } 
  47.   } 
  48.   /** 
  49.    * 生成鏈接URL 
  50.    * @param integer $page 頁碼 
  51.    * @return string 
  52.    */ 
  53.   private function url($page){ 
  54.     return str_replace(urlencode('[PAGE]'), $page, $this->url); 
  55.   } 
  56.   /** 
  57.    * 組裝分頁鏈接 
  58.    * @return string 
  59.    */ 
  60.   public function show() { 
  61.     if(0 == $this->totalRows) return ''
  62.     /* 生成URL */ 
  63.     $this->parameter[$this->p] = '[PAGE]'
  64.     $this->url = U(ACTION_NAME, $this->parameter); 
  65.     /* 計算分頁信息 */ 
  66.     $this->totalPages = ceil($this->totalRows / $this->listRows); //總頁數 
  67.     if(!empty($this->totalPages) && $this->nowPage > $this->totalPages) { 
  68.       $this->nowPage = $this->totalPages; 
  69.     } 
  70.     /* 計算分頁零時變量 */ 
  71.     $now_cool_page   = $this->rollPage/2; 
  72.     $now_cool_page_ceil = ceil($now_cool_page); 
  73.     $this->lastSuffix && $this->config['last'] = $this->totalPages; 
  74.     //上一頁 
  75.     $up_row = $this->nowPage - 1; 
  76.     $up_page = $up_row > 0 ? '<a class="prev" href="' . $this->url($up_row) . '" rel="external nofollow" >' . $this->config['prev'] . '</a>' : ''
  77.     //下一頁 
  78.     $down_row = $this->nowPage + 1; 
  79.     $down_page = ($down_row <= $this->totalPages) ? '<a class="next" href="' . $this->url($down_row) . '" rel="external nofollow" >' . $this->config['next'] . '</a>' : ''
  80.     //第一頁 
  81.     $the_first = ''
  82.     if($this->totalPages > $this->rollPage && ($this->nowPage - $now_cool_page) >= 1){ 
  83.       $the_first = '<a class="first" href="' . $this->url(1) . '" rel="external nofollow" >' . $this->config['first'] . '</a>'
  84.     } 
  85.     //最后一頁 
  86.     $the_end = ''
  87.     if($this->totalPages > $this->rollPage && ($this->nowPage + $now_cool_page) < $this->totalPages){ 
  88.       $the_end = '<a class="end" href="' . $this->url($this->totalPages) . '" rel="external nofollow" >' . $this->config['last'] . '</a>'
  89.     } 
  90.     //數字連接 
  91.     $link_page = ""
  92.     for($i = 1; $i <= $this->rollPage; $i++){ 
  93.       if(($this->nowPage - $now_cool_page) <= 0 ){ 
  94.         $page = $i; 
  95.       }elseif(($this->nowPage + $now_cool_page - 1) >= $this->totalPages){ 
  96.         $page = $this->totalPages - $this->rollPage + $i; 
  97.       }else
  98.         $page = $this->nowPage - $now_cool_page_ceil + $i; 
  99.       } 
  100.       if($page > 0 && $page != $this->nowPage){ 
  101.         if($page <= $this->totalPages){ 
  102.           $link_page .= '<a class="num" href="' . $this->url($page) . '" rel="external nofollow" >' . $page . '</a>'
  103.         }else
  104.           break
  105.         } 
  106.       }else
  107.         if($page > 0 && $this->totalPages != 1){ 
  108.           $link_page .= '<span class="current">' . $page . '</span>'
  109.         } 
  110.       } 
  111.     } 
  112.     //替換分頁內容 
  113.     $page_str = str_replace( 
  114.       array('%HEADER%''%NOW_PAGE%''%UP_PAGE%''%DOWN_PAGE%''%FIRST%''%LINK_PAGE%''%END%''%TOTAL_ROW%''%TOTAL_PAGE%'), 
  115.       array($this->config['header'], $this->nowPage, $up_page, $down_page, $the_first, $link_page, $the_end, $this->totalRows, $this->totalPages), 
  116.       $this->config['theme']); 
  117.     return "<div>{$page_str}</div>"
  118.   } 

2. 控制器,隨便寫個demo。

  1. public function index(){ 
  2.     $obj=M("news"); 
  3.     $count = $obj->where('status=1 and classID=74 ')->count();// 查詢滿足要求的總記錄數 
  4.     $limit = 10; 
  5.     $Page = new \Think\Page($count,$limit);// 實例化分頁類 傳入總記錄數和每頁顯示的記錄數(25) 
  6.     $show    = $Page->show();// 分頁顯示輸出 
  7.     $list = $obj->where('status=1 and classID=74 ')->order('writetime desc')->limit($Page->firstRow.','.$Page->listRows)->select(); 
  8.     $firstlist = $obj->where('status=1 and classID=74 and Indexfirst=1')->order('writetime desc')->limit(4)->select(); 
  9.     $this->assign('firstlist',$firstlist); 
  10.     $this->assign('page',$show);// 賦值分頁輸出 
  11.     $this->assign('list',$list); 
  12.     $this->display(); 

3. 接下來是View層,樣式控制。page.css文件

  1. .b-page { 
  2.  background: #fff; 
  3.  box-shadow: 0px 1px 2px 0px #E2E2E2; 
  4. .page { 
  5.  width: 100%; 
  6.  background: #FFF; 
  7.  text-align: center; 
  8.  overflow: hidden; 
  9.  font-size:14px; 
  10.  margin-top:50px; 
  11. .page .first, 
  12. .page .prev, 
  13. .page .current, 
  14. .page .num, 
  15. .page .current, 
  16. .page .next, 
  17. .page .end { 
  18.  padding: 8px 16px; 
  19.  margin: 0px 5px; 
  20.  display: inline-block; 
  21.  color: #144970; 
  22.  border: 1px solid #F2F2F2; 
  23.  border-radius: 5px; 
  24. .page .first:hover, 
  25. .page .prev:hover, 
  26. .page .current:hover, 
  27. .page .num:hover, 
  28. .page .current:hover, 
  29. .page .next:hover, 
  30. .page .end:hover { 
  31.  text-decoration: none; 
  32.  background: #F8F5F5; 
  33. .page .current { 
  34.  background-color: #144970; 
  35.  color: #FFF; 
  36.  border-radius: 5px; 
  37. .page .current:hover { 
  38.  text-decoration: none; 
  39.  background: #144970; 
  40. .page .not-allowed { 
  41.  cursor: not-allowed; 

希望本文所述對大家基于ThinkPHP框架的PHP程序設計有所幫助。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 美女日b视频 | 视频免费 | 精品无码国产污污污免费网站2 | 无码AV精品一区二区三区 | yin娃sao货调教情趣用品店 | 日本 片 成人 在线 日b视频免费 | 穆挂英风流艳史小说 | 99热久久这里只有精品23 | 1024人成网色www | 精品国产福利片在线观看 | 亚洲不卡高清免v无码屋 | h黑寡妇一级毛片 | 第一福利在线观看永久视频 | 四虎tv在线观看884aa | 亚洲国产成人99精品激情在线 | 丝袜老师好湿好紧我要进去了 | 任你操视频在线观看 | 亚洲精品乱码久久久久久蜜桃欧美 | 人与善交大片免费看 | 精品图区 | 成年美女黄网站色视频大全免费 | 91久久偷偷做嫩草影院电 | 色播艾小青国产专区在线播放 | 美国videos| 天美蜜桃精东乌鸦传媒 | 亚洲天堂中文字幕 | 性一交一无一伦一精一品 | 视频在线观看大片 | 爱福利视频一区 | 男人疯狂进女人下部视频动漫 | 亚洲人成综合在线播放 | 视频一区二区三区在线观看 | 91热国内精品永久免费观看 | 欧美激烈精交gif动态图18p | 精品高潮呻吟99AV无码视频 | 欧美日韩一区二区三区免费 | 操女人的b| 亚洲 欧美 中文 日韩 视频 | 欧美一级久久久久久久大片 | 亚洲欧美久久婷婷爱综合一区天堂 | 成人伊人亚洲人综合网站222 |