'条记录','prev'=>'上一页','next'=>'下一页','first'=>'第一页','last'=>'最后一页','theme'=>' %totalRow% %header% %nowPage%/%totalPage% 页 %upPage% %downPage% %first% %prePage% %linkPage% %nextPage% %end%'); // 默认分页变量名 protected $varPage; /** * 架构函数 * @access public * @param array $totalRows 总的记录数 * @param array $listRows 每页显示记录数 * @param array $parameter 分页跳转的参数 */ public function __construct($totalRows,$listRows='',$parameter='',$url='') { $this->config = array('header'=>L('条记录'),'prev'=>L('上一页'),'next'=>L('下一页'),'first'=>L('第一页'),'last'=>L('最后一页'),'theme'=>' %totalRow% %header% %nowPage%/%totalPage% '.L('页').' %upPage% %downPage% %first% %prePage% %linkPage% %nextPage% %end%'); $this->totalRows = $totalRows; $this->parameter = $parameter; $this->varPage = C('VAR_PAGE') ? C('VAR_PAGE') : 'p' ; if(!empty($listRows)) { $this->listRows = intval($listRows); } $this->totalPages = ceil($this->totalRows/$this->listRows); //总页数 $this->coolPages = ceil($this->totalPages/$this->rollPage); $this->nowPage = !empty($_GET[$this->varPage])?intval($_GET[$this->varPage]):1; if($this->nowPage<1){ $this->nowPage = 1; }elseif(!empty($this->totalPages) && $this->nowPage>$this->totalPages) { $this->nowPage = $this->totalPages; } $this->firstRow = $this->listRows*($this->nowPage-1); if(!empty($url)) $this->url = $url; } public function setConfig($name,$value) { if(isset($this->config[$name])) { $this->config[$name] = $value; } } /** * 分页显示输出 * @access public */ public function show() { if(0 == $this->totalRows) return ''; $p = $this->varPage; $nowCoolPage = ceil($this->nowPage/$this->rollPage); // 分析分页参数 if($this->url){ $depr = C('URL_PATHINFO_DEPR'); $url = rtrim(U('/'.$this->url,'',false),$depr).$depr.'__PAGE__'; }else{ if($this->parameter && is_string($this->parameter)) { parse_str($this->parameter,$parameter); }elseif(is_array($this->parameter)){ $parameter = $this->parameter; }elseif(empty($this->parameter)){ unset($_GET[C('VAR_URL_PARAMS')]); $var = !empty($_POST)?$_POST:$_GET; if(empty($var)) { $parameter = array(); }else{ $parameter = $var; } } $parameter[$p] = '__PAGE__'; $url = U('',$parameter); } //上下翻页字符串 $upRow = $this->nowPage-1; $downRow = $this->nowPage+1; if ($upRow>0){ $upPage = "".$this->config['prev'].""; }else{ $upPage = ''; } if ($downRow <= $this->totalPages){ $downPage = "".$this->config['next'].""; }else{ $downPage = ''; } // << < > >> if($nowCoolPage == 1){ $theFirst = ''; $prePage = ''; }else{ $preRow = $this->nowPage-$this->rollPage; $prePage = "上".$this->rollPage."页"; $theFirst = "".$this->config['first'].""; } if($nowCoolPage == $this->coolPages){ $nextPage = ''; $theEnd = ''; }else{ $nextRow = $this->nowPage+$this->rollPage; $theEndRow = $this->totalPages; $nextPage = "下".$this->rollPage."页"; $theEnd = "".$this->config['last'].""; } // 1 2 3 4 5 $linkPage = ""; for ($i=1;$i<=$this->rollPage;$i++) { $page = ($nowCoolPage-1)*$this->rollPage+$i; if($page!=$this->nowPage){ if ($page<=$this->totalPages) { $linkPage .= "".$page.""; } else { break; } } else { if ($this->totalPages != 1) { $linkPage .= "".$page.""; } } } $pageStr = str_replace(array('%header%','%nowPage%','%totalRow%','%totalPage%','%upPage%','%downPage%','%first%','%prePage%','%linkPage%','%nextPage%','%end%'),array($this->config['header'],$this->nowPage,$this->totalRows,$this->totalPages,$upPage,$downPage,$theFirst,$prePage,$linkPage,$nextPage,$theEnd),$this->config['theme']); return $pageStr; } }