激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

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

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程序設計有所幫助。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 深夜影院一级毛片 | 中文字幕精品亚洲 | 欧美日韩在线播放一区 | 国产精品一区在线免费观看 | 国产精品成人一区二区三区吃奶 | 色人阁导航 | 蜜桃视频在线入口www | 毛片免费视频播放 | 嫩呦国产一区二区三区av | 欧美粗暴analvideos | 国产麻豆交换夫妇 | xxx日本视频 | 久久综合狠狠综合久久 | 亚洲小视频 | av成人在线电影 | 国内性爱视频 | 意大利av在线 | 在线看免费观看日本 | 精品一区二区亚洲 | 九草网 | 天天曰夜夜操 | h视频在线免费观看 | 国产精品av久久久久久网址 | 欧美成年私人网站 | 日韩视频一二区 | 久久99精品国产自在现线 | 精品黑人一区二区三区国语馆 | 久久蜜臀一区二区三区av | 亚洲精品欧美在线 | 久久久一区二区精品 | 亚洲第一色婷婷 | 免费黄色小视频网站 | 国产一精品一av一免费爽爽 | 男男啪羞羞视频网站 | 成人福利软件 | 成年免费大片黄在线观看岛国 | 国产成人在线观看网站 | 国产一级小视频 | 毛片一区二区三区 | 国产视频在线观看一区二区三区 | 福利免费在线 |