thinkPHP框架可添加js事件的分页类customPage.class.php完整实例

作者:袖梨 2022-06-24

用于ajax动态加载数据的分页类,分页事件可以动态添加,去除了a链接中的href地址。

 

 代码如下复制代码

// +----------------------------------------------------------------------

// | ThinkPHP [ WE CAN DO IT JUST THINK IT ]

// +----------------------------------------------------------------------

// | Copyright (c) 2006-2014 http://thinkphp.cn All rights reserved.

// +----------------------------------------------------------------------

// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )

// +----------------------------------------------------------------------

// | Author: 麦当苗儿

// +----------------------------------------------------------------------

namespaceThink;

classcustomPage{

  public$firstRow;// 起始行数

  public$listRows;// 列表每页显示行数

  public$parameter;// 分页跳转时要带的参数

  public$totalRows;// 总行数

  public$totalPages;// 分页总页面数

  public$rollPage = 6;// 分页栏每页显示的页数

  public$lastSuffix= true;// 最后一页是否显示总页数

  private$p   ='p'//分页参数名

  private$url  =''//当前链接URL

  private$nowPage= 1;

  // 分页显示定制

  private$config=array(

    'header'=>'共 %TOTAL_ROW% 条记录',

    'prev' =>'上一页',

    'next' =>'下一页',

    'first'=>Ƈ...',

    'last' =>'...%TOTAL_PAGE%',

    'theme'=>'%FIRST% %UP_PAGE% %LINK_PAGE% %DOWN_PAGE% %END%',

  );

  /**

   * 架构函数

   * @param array $totalRows 总的记录数

   * @param array $listRows 每页显示记录数

   * @param array $parameter 分页跳转的参数

   */

  publicfunction__construct($totalRows,$listRows=20,$parameter=array()) {

    C('VAR_PAGE') &&$this->p = C('VAR_PAGE');//设置分页参数名称

    /* 基础设置 */

    $this->totalRows =$totalRows;//设置总记录数

    $this->listRows  =$listRows;//设置每页显示行数

    $this->parameter =empty($parameter) ?$_GET:$parameter;

    $this->nowPage  =empty($_GET[$this->p]) ? 1 :intval($_GET[$this->p]);

    $this->totalPages =ceil($this->totalRows /$this->listRows);//总页数

    if($this->nowPage>$this->totalPages) {

      $this->nowPage =$this->totalPages ;

    }

    $this->nowPage  =$this->nowPage>0 ?$this->nowPage : 1;

    $this->firstRow  =$this->listRows * ($this->nowPage - 1);

  }

  /**

   * 定制分页链接设置

   * @param string $name 设置名称

   * @param string $value 设置值

   */

  publicfunctionsetConfig($name,$value) {

    if(isset($this->config[$name])) {

      $this->config[$name] =$value;

    }

  }

  /**

   * 生成链接URL

   * @param integer $page 页码

   * @return string

   */

  privatefunctionurl($page){

    returnstr_replace(urlencode('[PAGE]'),$page,$this->url);

  }

  /**

   * 组装分页链接

   * @return string

   */

  publicfunctionshow() {

    if(0 ==$this->totalRows)return''

    /* 生成URL */

    $this->parameter[$this->p] ='[PAGE]'

    $this->url = U(ACTION_NAME,$this->parameter);

    /* 计算分页信息 */

    if(!empty($this->totalPages) &&$this->nowPage >$this->totalPages) {

      $this->nowPage =$this->totalPages;

    }

    /* 计算分页临时变量 */

    $now_cool_page  =$this->rollPage/2;

    $now_cool_page_ceil=ceil($now_cool_page);

    $this->lastSuffix &&$this->config['last'] =$this->totalPages;

    //上一页

    $up_row=$this->nowPage - 1;

    $up_page=$up_row>  0 ?'上一页':''

    //下一页

    $down_row=$this->nowPage + 1;

    $down_page=  ($down_row<=$this->totalPages) ?'下一页':''

    //第一页

    $the_first=''

    if($this->totalPages >$this->rollPage && ($this->nowPage -$now_cool_page) >= 1){

      $the_first='第一页'

    }

    //最后一页

    $the_end=''

    //if($this->totalPages  > $this->rollPage && ($this->nowPage + $now_cool_page)  < $this->totalPages){

    if($this->totalPages >$this->rollPage && ($this->nowPage +$now_cool_page) <$this->totalPages){

      $the_end='最后一页'

    }

    for($i= 1;$i<=$this->rollPage;$i++){

        if(($this->nowPage -$now_cool_page) <= 0 ){

          $page=$i;

        }elseif(($this->nowPage +$now_cool_page- 1) >=$this->totalPages){

          $page=$this->totalPages -$this->rollPage +$i;

        }else{

          $page=$this->nowPage -$now_cool_page_ceil+$i;

        }

        if($page> 0 &&$page!=$this->nowPage){

          if($page<=$this->totalPages){

            $link_page.= ('

  • '.$page.'

  • ');

          }else{

            break;

          }

        }else{

          if($page> 0 &&$this->totalPages != 1){

            $link_page.= ('

  • '.$page.'

  • ');

          }

        }

    }

    if(!empty($link_page))$link_page='

  • '.$link_page.'

'

    //替换分页内容

    $page_str=str_replace(

      array('%HEADER%','%NOW_PAGE%','%UP_PAGE%','%DOWN_PAGE%','%FIRST%','%LINK_PAGE%','%END%','%TOTAL_ROW%','%TOTAL_PAGE%'),

      array($this->config['header'],$this->nowPage,$up_page,$down_page,$the_first,$link_page,$the_end,$this->totalRows,$this->totalPages),

      $this->config['theme']);

    $page_str= trim($page_str);

    if(!empty($page_str))$page_str.='


跳转'

    return$page_str;

  }

}

 

相关文章

精彩推荐