专为zendframework打造的smarty分页插件
时间:2007-05-04
来源:互联网
zendframework请求的地址很让搜索工具喜爱,但是假如这里用相对路径来取地址的话或多或少出现问题,在这里我通过$_SERVER['REQUEST_URI']来取得,然后再对他加工,再传递给smarty。
最后的效果如下:
假如当前请求的uri是 /dis/forum/index/lv/2/fid/2/page/3 或 /dis/forum/index/lv/2/fid/2/page/3/ 或 /dis/forum/index/lv/2/fid/2
那么分页链接会显示为 /dis/forum/index/lv/2/fid/2/page/N ,N代替分页显示的数字
这个插件难免会有bug,假如对您有用的话,请多多支持以及修正(修正后记得发我一份),我的小站: http://hey-m.phpoo.cn,欢迎大家光临
smarty分页模板(样式就根据自己来订造拉):
最后的效果如下:
假如当前请求的uri是 /dis/forum/index/lv/2/fid/2/page/3 或 /dis/forum/index/lv/2/fid/2/page/3/ 或 /dis/forum/index/lv/2/fid/2
那么分页链接会显示为 /dis/forum/index/lv/2/fid/2/page/N ,N代替分页显示的数字
这个插件难免会有bug,假如对您有用的话,请多多支持以及修正(修正后记得发我一份),我的小站: http://hey-m.phpoo.cn,欢迎大家光临
smarty分页模板(样式就根据自己来订造拉):
复制PHP内容到剪贴板
<div id="pagebar">
<ul>
<{section name="loop" loop=$end start=$act }>
<{if $smarty.section.loop.index eq $page}>
<li><{$smarty.section.loop.index}></li>
<{else}>
<li><a href="<{$url}><{$smarty.section.loop.index}>"><{$smarty.section.loop.index}></a></li>
<{/if}>
<{/section}>
</ul>
</div>
模板的调用:
PHP代码:
<!--smarty分页显示插件--><div id="pagebar">
<ul>
<{section name="loop" loop=$end start=$act }>
<{if $smarty.section.loop.index eq $page}>
<li><{$smarty.section.loop.index}></li>
<{else}>
<li><a href="<{$url}><{$smarty.section.loop.index}>"><{$smarty.section.loop.index}></a></li>
<{/if}>
<{/section}>
</ul>
</div>
复制PHP内容到剪贴板
<{postpager date=$posts page=$page}>
<!--包含分页模板-->
<{include file="pagebar.html"}>
smarty分页插件代码:
PHP代码:
<!--调用插件,date是分页的数组(从数据库获取),page是当前的页面--><{postpager date=$posts page=$page}>
<!--包含分页模板-->
<{include file="pagebar.html"}>
复制PHP内容到剪贴板
<?php
/**
* smarty分页插件
*
* @author edwardhey
* @package defaultPackage
* @copyright 2007-05-04
* @version 1.0
*/
function smarty_function_postpager($params,&$smarty){
//每页显示数目
$per=15;
//获取当前页码
$page=$params['page'];
//总记录数
$trecord=0;
//得出记录数
if($params['date']){
foreach($params['date'] as $v){
$trecord += count($v);
}
}
//得出总页数
$tpage = ceil($trecord/$per);
//这个根据自己需求而定
$nums = count($params['date']['top']);
$less = $per-$nums;
if(is_array($params['date']['normal'])){
if($page==1){
$less = $per-$nums;
$starno = 0;
$normal=array_slice($params['date']['normal'],$starno,$less);
}else{
$starno = $less+$per*($page-2)+1;
$normal=array_slice($params['date']['normal'],$starno,$per);
}
}
// 当前页数前显示数字
$front=2;
// 当前页后显示数字
$behind=7;
// 开始页数
$act = $page - $front;
// 结束页数
$end = $page + $behind;
if ($act < 1) $act = 1;
if ($end > $tpage) $end = $tpage;
/*解决url请求问题*/
$url=$_SERVER['REQUEST_URI'];
if(!preg_match("/page/i",$url)){
$url .= '/page/';
}else{
$url = preg_replace('/(?:page\/\\d+\/?)/', 'page/', $url);
}
/*地址url*/
$smarty->assign("url",$url);
/*分页开始项*/
$smarty->assign("act",$act);
/*分页结束项*/
$smarty->assign("end",$end+1);
//总共页
$smarty->assign("tpage",$tpage);
//置顶
$smarty->assign("top",$params['date']['top']);
//正常
$smarty->assign("normal",$normal);
}
?>
[ 本帖最后由 edwardhey 于 2007-5-4 10:12 编辑 ] PHP代码:
<?php
/**
* smarty分页插件
*
* @author edwardhey
* @package defaultPackage
* @copyright 2007-05-04
* @version 1.0
*/
function smarty_function_postpager($params,&$smarty){
//每页显示数目
$per=15;
//获取当前页码
$page=$params['page'];
//总记录数
$trecord=0;
//得出记录数
if($params['date']){
foreach($params['date'] as $v){
$trecord += count($v);
}
}
//得出总页数
$tpage = ceil($trecord/$per);
//这个根据自己需求而定
$nums = count($params['date']['top']);
$less = $per-$nums;
if(is_array($params['date']['normal'])){
if($page==1){
$less = $per-$nums;
$starno = 0;
$normal=array_slice($params['date']['normal'],$starno,$less);
}else{
$starno = $less+$per*($page-2)+1;
$normal=array_slice($params['date']['normal'],$starno,$per);
}
}
// 当前页数前显示数字
$front=2;
// 当前页后显示数字
$behind=7;
// 开始页数
$act = $page - $front;
// 结束页数
$end = $page + $behind;
if ($act < 1) $act = 1;
if ($end > $tpage) $end = $tpage;
/*解决url请求问题*/
$url=$_SERVER['REQUEST_URI'];
if(!preg_match("/page/i",$url)){
$url .= '/page/';
}else{
$url = preg_replace('/(?:page\/\\d+\/?)/', 'page/', $url);
}
/*地址url*/
$smarty->assign("url",$url);
/*分页开始项*/
$smarty->assign("act",$act);
/*分页结束项*/
$smarty->assign("end",$end+1);
//总共页
$smarty->assign("tpage",$tpage);
//置顶
$smarty->assign("top",$params['date']['top']);
//正常
$smarty->assign("normal",$normal);
}
?>
作者: edwardhey 发布时间: 2007-05-04
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28