找了个SMARTY分页插件的例子,先放在这,抽时间看下:
<?php
/**
* Smarty plugin
* @package Smarty
* @subpackage plugins
* @分页插件,robinhong于2008-09-09
* @example:{{page values=$RS_PAGE
output="共有<span>%recordcount</span>条记录 每页<span>%pagesize</span>条记录 第<span>%pagenum</span>页/共%pagecount页 %first %prev %next %last %select %list"
first="首页"
prev="上页"
next="下页"
last="末页"
select="第%pagenum页"
list=5}}
*/
function smarty_function_page($params, &$smarty)
{
if (!isset($params['values']) && !isset($params['output'])) {
$smarty->trigger_error("array: missing 'values' or 'output' parameter");
return;
}
if($params['values'] == '' || !is_array($params['values'])) {
return $params['values'];
}
return page($params);
}
function page($a)
{
//select分页
$ps="<select name=/"GotoPage/" onChange=/"location=this.options[this.selectedIndex].value/">";
for($p=1;$p<=$a['values'][pagecount];$p++){
$Sel="";
if($a['values'][page]==$p){$Sel=" selected";}
$ps=$ps."<option value=/"".$a['values'][pagelink].$p."/"$Sel>".str_replace("%pagenum",$p,$a['select'])."</option>";
}
$ps=$ps."</select>";
//数字链接分页
if($a['list']>0)
{
$pageStart=$a['values'][page]>$a['list']?$a['values'][page]-$a['list']:1;
$pageEnd=$a['values'][page]+$a['list']>$a['values'][pagecount]?$a['values'][pagecount]:$a['values'][page]+$a['list'];
}
else
{
$pageStart=1;
$pageEnd=$a['values'][pagecount];
}
for($p=$pageStart;$p<=$pageEnd;$p++){
if($a['values'][page]==$p){$pl=$pl."<span>".$p."</span>";}
else{$pl=$pl." <a href=/"".$a['values'][pagelink].$p."/">".$p."</a> ";}
}
//上下页链接分页
if($a['values'][pagecount]>1)
{
if($a['values'][page]==1)
{
$pt=array($a['first'],$a['prev'],"<a href=/"".$a['values'][pagelink].intval($a['values'][page]+1)."/">".$a['next']."</a>","<a href=/"".$a['values'][pagelink].$a['values'][pagecount]."/">".$a['last']."</a>");
}
elseif($a['values'][page]==$a['values'][pagecount])
{
$pt=array("<a href=/"".$a['values'][pagelink]."1/">".$a['first']."</a>","<a href=/"".$a['values'][pagelink].intval($a['values'][page]-1)."/">".$a['prev']."</a> ",$a['next'],$a['last']);
}
else
{
$pt=array("<a href=/"".$a['values'][pagelink]."1/">".$a['first']."</a>","<a href=/"".$a['values'][pagelink].intval($a['values'][page]-1)."/">".$a['prev']."</a>","<a href=/"".$a['values'][pagelink].intval($a['values'][page]+1)."/">".$a['next']."</a>","<a href=/"".$a['values'][pagelink].$a['values'][pagecount]."/">".$a['last']."</a>");
}
}
else
{
$pt=array($a['first'],$a['prev'],$a['next'],$a['last']);
}
$out=$a['output'];
$out=str_replace("%recordcount",$a['values'][recordcount],$out);
$out=str_replace("%pagesize",$a['values'][pagesize],$out);
$out=str_replace("%pagenum",$a['values'][page],$out);
$out=str_replace("%pagecount",$a['values'][pagecount],$out);
$out=str_replace("%first",$pt[0],$out);
$out=str_replace("%prev",$pt[1],$out);
$out=str_replace("%next",$pt[2],$out);
$out=str_replace("%last",$pt[3],$out);
$out=str_replace("%select",$ps,$out);
$out=str_replace("%list",$pl,$out);
return $out;
}
?>
Smarty是一个使用PHP写出来的模板PHP模板引擎,是目前业界最著名的PHP模板引擎之一。它分离了逻辑代码和外在的内容,提供了一种易于管理和使用的方法,用来将原本与HTML代码混杂在一起PHP代码逻辑分离。
smarty的插件有function, modifier, block, compiler,prefilter, postfilter, outputfilter, resource, insert等几种类型, 本文中我们只使用function型插件。
主要有三种分页效果,select分页,数字链接分页,上下页链接分页。
模板里调用示例
{{page values=$RS_PAGE output=”共有<span>%recordcount</span>条记录 每页<span>%pagesize</span>条记录 第<span>%pagenum</span>页/共%pagecount页 %first %prev %next %last %select %list” first=”首页” prev=”上页” next=”下页” last=”末页” select=”第%pagenum页” list=5}}
说明一下 values是要传入的分页数据信息,$RS_PAGE=$arrPage[recordcount,pagesize,page,pagecount,pagelink],分别是数据记录总数、每页记录数、当前页、总页数、分页链接文件。output是分页显示的效果,想要显示不同的分页效果直接在模板里修改这个参数的值就可以。
下面看一下实际效果
7951

被折叠的 条评论
为什么被折叠?



