#1 anythink
先上一张图,具体效果如下:
请将如下代码加入spModel.php 文件的 spPager 分页类中,SP使用3.1.66版本
/**获取html版本的分页**/
public function pagerHtml($c='main',$a='index',$filter=Null)
{
$pager =$this->getPager();
$pages = $this->makepage($pager); //获得截断的pages
$pageHtml = Null;
if($pager)
{
//显示头部
if($pager['current_page'] != $pager['first_page'])
{
$pageHtml .= '« 第一页
« 上一页';
}
//显示中间
foreach($pages as $thepage)
{
if($thepage != $pager['current_page'])
{
$pageHtml .= ''.$thepage.' ';
}else{
$pageHtml .= ''.$thepage.'';
}
}
//显示尾页
if($pager['current_page'] != $pager['last_page'])
{
$pageHtml .= '下一页 »
尾页 »';
}
$pageHtml .= $pager['total_count'].'/'.$pager['total_page'].'/'.$pager['page_size'];
}
return $pageHtml;
}
/*进行页码截断*/
private function makepage($pager, $offset = 4) //这里的$offset表示当前页的左右偏移量
{
$start = 1;
$end = $offset * 2+1;
if ($pager['current_page'] > $offset)
{
$start = $pager['current_page'] - $offset;
$end = $pager['current_page'] + $offset;
}
if ($end > $pager['total_page'])
{
$start = $pager['total_page'] - $offset * 2;
$end = $pager['total_page'];
}
if ($start < 1) $start = 1;
return array_slice($pager['all_pages'], $start - 1, $end - $start+1, true);
}
程序中如何写?
如下:
$this->pager = $db->spPager()->pagerHtml('adminacl','',array('filter'=>'123','test'=>'333'));
将原先的getPager,改成pagerHtml
pagerHtml支持三个参数
* @param c 控制器
* @param a 模块
* @param filter 数组,分页附加的参数,做多参数翻页时候必用!
视图中如何些?
如下:
<{$pager}>
搞定!
2011-05-26 17:15:08