最常用的應(yīng)該就是分頁(yè)了包个,tp5已經(jīng)將分頁(yè)給封裝好了,實(shí)在是方便!
分頁(yè)主要在model中查詢語(yǔ)句例使用paginate()函數(shù)碧囊。
tp5分頁(yè)的默認(rèn)樣式很丑树灶,或者說(shuō)根本沒(méi)有樣式。
以下為修改方法(參考其他大神的擴(kuò)展代碼):
1.首先在tp的擴(kuò)展文件夾extend中創(chuàng)建page文件夾(文件夾名稱可以自己決定糯而,命名空間對(duì)就行)
2. 將自定義分頁(yè)類文件page.php放到page文件夾下
? ??<?php
namespace page;
use think\Paginator;
class Page extends Paginator
{
? ? //首頁(yè)
? ? protected function home() {
? ? ? ? if ($this->currentPage() > 1) {
? ? ? ? ? ? return "<a href='" . $this->url(1) . "' title='首頁(yè)'>首頁(yè)</a>";
? ? ? ? } else {
? ? ? ? ? ? return "<p>首頁(yè)</p>";
? ? ? ? }
? ? }
? ? //上一頁(yè)
? ? protected function prev() {
? ? ? ? if ($this->currentPage() > 1) {
? ? ? ? ? ? return "<a href='" . $this->url($this->currentPage - 1) . "' title='上一頁(yè)'>上一頁(yè)</a>";
? ? ? ? } else {
? ? ? ? ? ? return "<p>上一頁(yè)</p>";
? ? ? ? }
? ? }
? ? //下一頁(yè)
? ? protected function next() {
? ? ? ? if ($this->hasMore) {
? ? ? ? ? ? return "<a href='" . $this->url($this->currentPage + 1) . "' title='下一頁(yè)'>下一頁(yè)</a>";
? ? ? ? } else {
? ? ? ? ? ? return"<p>下一頁(yè)</p>";
? ? ? ? }
? ? }
? ? //尾頁(yè)
? ? protected function last() {
? ? ? ? if ($this->hasMore) {
? ? ? ? ? ? return "<a href='" . $this->url($this->lastPage) . "' title='尾頁(yè)'>尾頁(yè)</a>";
? ? ? ? } else {
? ? ? ? ? ? return "<p>尾頁(yè)</p>";
? ? ? ? }
? ? }
? ? //統(tǒng)計(jì)信息
? ? protected function info(){
? ? ? ? return "<p class='pageRemark'>共<b>" . $this->lastPage .
? ? ? ? ? ? "</b>頁(yè)<b>" . $this->total . "</b>條數(shù)據(jù)</p>";
? ? }
? ? /**
? ? * 頁(yè)碼按鈕
? ? * @return string
? ? */
? ? protected function getLinks()
? ? {
? ? ? ? $block = [
? ? ? ? ? ? 'first'? => null,
? ? ? ? ? ? 'slider' => null,
? ? ? ? ? ? 'last'? => null
? ? ? ? ];
? ? ? ? $side? = 3;
? ? ? ? $window = $side * 2;
? ? ? ? if ($this->lastPage < $window + 6) {
? ? ? ? ? ? $block['first'] = $this->getUrlRange(1, $this->lastPage);
? ? ? ? } elseif ($this->currentPage <= $window) {
? ? ? ? ? ? $block['first'] = $this->getUrlRange(1, $window + 2);
? ? ? ? ? ? $block['last']? = $this->getUrlRange($this->lastPage - 1, $this->lastPage);
? ? ? ? } elseif ($this->currentPage > ($this->lastPage - $window)) {
? ? ? ? ? ? $block['first'] = $this->getUrlRange(1, 2);
? ? ? ? ? ? $block['last']? = $this->getUrlRange($this->lastPage - ($window + 2), $this->lastPage);
? ? ? ? } else {
? ? ? ? ? ? $block['first']? = $this->getUrlRange(1, 2);
? ? ? ? ? ? $block['slider'] = $this->getUrlRange($this->currentPage - $side, $this->currentPage + $side);
? ? ? ? ? ? $block['last']? = $this->getUrlRange($this->lastPage - 1, $this->lastPage);
? ? ? ? }
? ? ? ? $html = '';
? ? ? ? if (is_array($block['first'])) {
? ? ? ? ? ? $html .= $this->getUrlLinks($block['first']);
? ? ? ? }
? ? ? ? if (is_array($block['slider'])) {
? ? ? ? ? ? $html .= $this->getDots();
? ? ? ? ? ? $html .= $this->getUrlLinks($block['slider']);
? ? ? ? }
? ? ? ? if (is_array($block['last'])) {
? ? ? ? ? ? $html .= $this->getDots();
? ? ? ? ? ? $html .= $this->getUrlLinks($block['last']);
? ? ? ? }
? ? ? ? return $html;
? ? }
? ? /**
? ? * 渲染分頁(yè)html
? ? * @return mixed
? ? */
? ? public function render()
? ? {
? ? ? ? if ($this->hasPages()) {
? ? ? ? ? ? if ($this->simple) {
? ? ? ? ? ? ? ? return sprintf(
? ? ? ? ? ? ? ? ? ? '%s<div class="pagination">%s %s %s</div>',
? ? ? ? ? ? ? ? ? ? $this->css(),
? ? ? ? ? ? ? ? ? ? $this->prev(),
? ? ? ? ? ? ? ? ? ? $this->getLinks(),
? ? ? ? ? ? ? ? ? ? $this->next()
? ? ? ? ? ? ? ? );
? ? ? ? ? ? } else {
? ? ? ? ? ? ? ? return sprintf(
? ? ? ? ? ? ? ? ? ? '%s<div class="pagination">%s %s %s %s %s %s</div>',
? ? ? ? ? ? ? ? ? ? $this->css(),
? ? ? ? ? ? ? ? ? ? $this->home(),
? ? ? ? ? ? ? ? ? ? $this->prev(),
? ? ? ? ? ? ? ? ? ? $this->getLinks(),
? ? ? ? ? ? ? ? ? ? $this->next(),
? ? ? ? ? ? ? ? ? ? $this->last(),
? ? ? ? ? ? ? ? ? ? $this->info()
? ? ? ? ? ? ? ? );
? ? ? ? ? ? }
? ? ? ? }
? ? }
? ? /**
? ? * 生成一個(gè)可點(diǎn)擊的按鈕
? ? *
? ? * @param? string $url
? ? * @param? int? ? $page
? ? * @return string
? ? */
? ? protected function getAvailablePageWrapper($url, $page)
? ? {
? ? ? ? return '<a href="' . htmlentities($url) . '" title="第"'. $page .'"頁(yè)" >' . $page . '</a>';
? ? }
? ? /**
? ? * 生成一個(gè)禁用的按鈕
? ? *
? ? * @param? string $text
? ? * @return string
? ? */
? ? protected function getDisabledTextWrapper($text)
? ? {
? ? ? ? return '<p class="pageEllipsis">' . $text . '</p>';
? ? }
? ? /**
? ? * 生成一個(gè)激活的按鈕
? ? *
? ? * @param? string $text
? ? * @return string
? ? */
? ? protected function getActivePageWrapper($text)
? ? {
? ? ? ? return '<a href="" class="cur">' . $text . '</a>';
? ? }
? ? /**
? ? * 生成省略號(hào)按鈕
? ? *
? ? * @return string
? ? */
? ? protected function getDots()
? ? {
? ? ? ? return $this->getDisabledTextWrapper('...');
? ? }
? ? /**
? ? * 批量生成頁(yè)碼按鈕.
? ? *
? ? * @param? array $urls
? ? * @return string
? ? */
? ? protected function getUrlLinks(array $urls)
? ? {
? ? ? ? $html = '';
? ? ? ? foreach ($urls as $page => $url) {
? ? ? ? ? ? $html .= $this->getPageLinkWrapper($url, $page);
? ? ? ? }
? ? ? ? return $html;
? ? }
? ? /**
? ? * 生成普通頁(yè)碼按鈕
? ? *
? ? * @param? string $url
? ? * @param? int? ? $page
? ? * @return string
? ? */
? ? protected function getPageLinkWrapper($url, $page)
? ? {
? ? ? ? if ($page == $this->currentPage()) {
? ? ? ? ? ? return $this->getActivePageWrapper($page);
? ? ? ? }
? ? ? ? return $this->getAvailablePageWrapper($url, $page);
? ? }
? ? /**
? ? * 分頁(yè)樣式
? ? */
? ? protected function css(){
? ? ? ? return '? <style type="text/css">
? ? ? ? ? ? .pagination p{
? ? ? ? ? ? ? ? margin:0;
? ? ? ? ? ? ? ? cursor:pointer
? ? ? ? ? ? }
? ? ? ? ? ? .pagination{
? ? ? ? ? ? ? ? height:40px;
? ? ? ? ? ? ? ? padding:20px 0px;
? ? ? ? ? ? }
? ? ? ? ? ? .pagination a{
? ? ? ? ? ? ? ? display:block;
? ? ? ? ? ? ? ? float:left;
? ? ? ? ? ? ? ? margin-right:10px;
? ? ? ? ? ? ? ? padding:2px 12px;
? ? ? ? ? ? ? ? height:24px;
? ? ? ? ? ? ? ? border:1px #cccccc solid;
? ? ? ? ? ? ? ? background:#fff;
? ? ? ? ? ? ? ? text-decoration:none;
? ? ? ? ? ? ? ? color:#808080;
? ? ? ? ? ? ? ? font-size:12px;
? ? ? ? ? ? ? ? line-height:24px;
? ? ? ? ? ? }
? ? ? ? ? ? .pagination a:hover{
? ? ? ? ? ? ? ? color:#077ee3;
? ? ? ? ? ? ? ? background: white;
? ? ? ? ? ? ? ? border:1px #077ee3 solid;
? ? ? ? ? ? }
? ? ? ? ? ? .pagination a.cur{
? ? ? ? ? ? ? ? border:none;
? ? ? ? ? ? ? ? background:#077ee3;
? ? ? ? ? ? ? ? color:#fff;
? ? ? ? ? ? }
? ? ? ? ? ? .pagination p{
? ? ? ? ? ? ? ? float:left;
? ? ? ? ? ? ? ? padding:2px 12px;
? ? ? ? ? ? ? ? font-size:12px;
? ? ? ? ? ? ? ? height:24px;
? ? ? ? ? ? ? ? line-height:24px;
? ? ? ? ? ? ? ? color:#bbb;
? ? ? ? ? ? ? ? border:1px #ccc solid;
? ? ? ? ? ? ? ? background:#fcfcfc;
? ? ? ? ? ? ? ? margin-right:8px;
? ? ? ? ? ? }
? ? ? ? ? ? .pagination p.pageRemark{
? ? ? ? ? ? ? ? border-style:none;
? ? ? ? ? ? ? ? background:none;
? ? ? ? ? ? ? ? margin-right:0px;
? ? ? ? ? ? ? ? padding:4px 0px;
? ? ? ? ? ? ? ? color:#666;
? ? ? ? ? ? }
? ? ? ? ? ? .pagination p.pageRemark b{
? ? ? ? ? ? ? ? color:red;
? ? ? ? ? ? }
? ? ? ? ? ? .pagination p.pageEllipsis{
? ? ? ? ? ? ? ? border-style:none;
? ? ? ? ? ? ? ? background:none;
? ? ? ? ? ? ? ? padding:4px 0px;
? ? ? ? ? ? ? ? color:#808080;
? ? ? ? ? ? }
? ? ? ? ? ? .dates li {font-size: 14px;margin:20px 0}
? ? ? ? ? ? .dates li span{float:right}
? ? ? ? </style>';
? ? }
}
3.修改配置文件(/application/config.php)
//分頁(yè)配置
? ? 'paginate'? ? ? ? ? ? ? => [
? ? ? ? 'type'? ? ? => 'bootstrap',
? ? ? ? 'var_page'? => 'page',
? ? ? ? 'list_rows' => 15,
? ? ],
將上面分頁(yè)配置改為:
? //自定義分頁(yè)配置?
? 'paginate'? ? ? ? ? ? ? => [?
? ? ? 'type'? ? ? => 'page\page',//分頁(yè)類?
? ? ? 'var_page'? => 'page',?
? ? ? 'list_rows' => 15,?
? ],
效果圖:
看下樣式要好很多天通,想要自己寫類文件也可以按照這種方法來(lái)做。