#1 xoYu
当你的内容过多 比如有几十上百个页码 撑破页面是必然的
原分页类很好用 唯一的不足就是这个
下面提供解决方法:
spController.php里的分页类
增加2行代码搞定 并不影响原有功能
$this->pageData = array(
"total_count" => $total_count, // 总记录数
"page_size" => $pageSize, // 分页大小
"total_page" => $total_page, // 总页数
"first_page" => 1, // 第一页
"prev_page" => ( ( 1 == $page ) ? 1 : ($page - 1) ), // 上一页
"next_page" => ( ( $page == $total_page ) ? $total_page : ($page + 1)), // 下一页
"last_page" => $total_page, // 最后一页
"current_page"=> $page, // 当前页
"mid_pages" => array(), // 中间显示数字页码 防止页码过多撑破页面 "all_pages" => array() // 全部页码
);
//for($i=1; $i <= $total_page; $i++)$this->pageData['all_pages'][] = $i; $this->pageData['mid_pages'] = array_slice($this->pageData['all_pages'],($page - 2) < 1 ? 0 : ($page - 3),5);红色部分为添加的。绿色部分为原有代码可注释可保留。
模板中
原来 :<{foreach from=$pager.
all_pages item=thepage}>
现在 :<{foreach from=$pager.
mid_pages item=thepage}>
2013-02-26 11:04:45
#2 coolhpy
我也是这个思路,,不过,我没直接修改 spController,而是继承spModel之后再写了个 getPager 方法。。这样做可以方便以后框架升级~ :lol
BTW,绿色那行不能注释吧,不然你 array_slice 就去不到值了啊~
我的代码:
/**
* 获取分页数据
* @param integer $length 如果页面较多时,最多显示的数字链接个数。最少:3,默认:5
* @return [array, '']
*/
public function getPager($length=5) {
$pager = $this->spPager()->getPager();
if ($pager) {
if ($length < 3) $length = 3;
if ($pager['total_page'] > $length) {
$start = $pager['current_page'] - ($length / 2);
if ($start < 0) $start = 0;
$pager['show_pages'] = array_slice($pager['all_pages'], $start, $length);
} else {
$pager['show_pages'] = $pager['all_pages'];
}
}
return $pager;
}
2013-02-26 11:42:16
#3 jake
论坛搜索一下,之前就有关于这个的一些很好的解决方案。可以实现像dz论坛那种页码
2013-02-26 13:43:18
#4 xoYu
coolhpy 发表于 2013-2-26 11:42
我也是这个思路,,不过,我没直接修改 spController,而是继承spModel之后再写了个 getPager 方法。。这样 ...
大意了 确实不能注释 注释之后 后面的数组内页没值了{:soso_e113:}
2013-02-26 18:01:13
#7 土蚕
直接修改模板中的代码即可
<{foreach from=$$pager.all_pages item=thepage}>
<{if $$thepage <= $$pager.current_page+2 && $$thepage >= $$pager.current_page-2}>
<{if $$thepage != $$pager.current_page}>
<{$$thepage}>
<{else}>
<{$$thepage}>
<{/if}>
<{/if}>
<{/foreach}>
2013-08-14 00:56:25
#13 jake
xoYu 发表于 2013-11-10 21:10
就是qq 微博登录。我单独写没问题 封装就不行。
嗯,QQ,微博登录,之前SAE上面的SP应用不少是这样的,初用可以用伪静态作为回调会简单些。
2013-11-10 21:26:20