SMARTY分页插件
来源:互联网 发布:默读 priest知乎 编辑:程序博客网 时间:2024/05/17 07:29
找了个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型插件。
代码请看function.page.php
主要有三种分页效果,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是分页显示的效果,想要显示不同的分页效果直接在模板里修改这个参数的值就可以。
下面看一下实际效果
http://demo.robinhong.cn/smarty-page/smarty-page.php
- SMARTY分页插件
- SMARTY分页插件
- smarty分页
- smarty分页
- smarty分页
- smarty分页
- smarty 插件
- Smarty的分页实现
- Smarty的分页实现
- 分页函数(Smarty + Adodb)
- Smarty的分页实现
- smarty的简单分页
- SMARTY分页详解
- smarty的简单分页
- SMARTY分页详解
- smarty的简单分页
- 应用smarty分页
- smarty商品分页
- Configuring Build Options
- GNUEmacs札记
- 数组的排序和类型转换
- GNU Emacs 札记2-GNUEmacs 内容简介
- UltraEdit的技巧 windows快捷操作
- SMARTY分页插件
- 给对话框应用程序添加滚动条+处理过界空白区问题(滚动块太小问题)
- Hive入门参考
- 使用 ASP.NET Web 窗体路由
- sicily 1231 The Embarrassed Cryptography
- 你别把我做神经搞
- Delphi中initialization和finalization编程技术
- 从一个案例看MVC中DataContext和UpdateModel的工作原理(详解UpdateModel/SubmitChanges错误)
- JAVA 风景日历