简化php模板页面中分页代码的解析

2018-09-23 20:30

阅读:571

  在使用模板的时候,会遇到这么一个问题:显示分页信息时操作麻烦,n多个模板都有分页块。
例如:
---共 20 条记录,当前 3/5 页 首页 上一页 下一页 尾页 GO-----
初遇到这个问题的道友,在考虑解决这个问题的时候好像都是在打php的主意,考虑怎么用php来实现,但是不管你是怎么设计都后设计成两种方案
1、用嵌套循环来实现
2、用n多个判断来搞
但是最终还是比较麻烦的,而且解析的时候是用的服务器端的资源。
不妨换个方法用javascript来代替你的php!!!!,这样即可减少php脚本的代码量,还可以把解析分页的工作交给客户端自己来作。不过javascript调试起来可能会比较麻烦。
最重要的是可以简化分页显示时,解析模板遇到的痛苦。
下面用一个支持pear的itx模板工具解析的模板.
其中<!-- BEGIN page -->和<!-- END page -->表示一个块,{recordcount}这种类似的字符串是变量。
----------------list.tpl---------------------
复制代码 代码如下:
//其它的html代码
<TABLE border=0 cellpadding=0 cellspacing=0 width=100%>
<TR>
<TD align=right nowrap>
<script src=images/page.js src=images/page.js language=javascript></script>
<script language=javascript><!--
BEGIN page -->
recordCount = {recordcount};
show = {showinonepage}
pageCount = {pagecount};
pageNow = {page};
pageStr = ?page=_page_;
document.write(showListPage0(recordCount, show, pageCount, pageNow, pageStr));
<!-- END page
// --></script>
</TD>
</TR>
</TABLE>
//其它的html代码
--------------------page.js------------
//---------------共 20 条记录,当前 3/5 页 首页 上一页 下一页 尾页 GO-------------------
//recordCount = 20;
//show = 20
//pageCount = 5;
//pageNow = 3;
//pageStr = ?page=_page_;
//document.write(showListPage(recordCount, show, pageCount, pageNow, pageStr));
function showListPage0(recordCount, show, pageCount, pageNow, pageStr){
if(pageCount<1) pageCount =0;
if(pageNow<1) pageNow = 0;
str = <form name=frmpage>共 <B>+recordCount+</B> 条记录,当前 <B>+pageNow+/+pageCount+</B> 页;
if(pageNow<=1)
str += 首页 ;
else
str += <A href=+pageStr.replace(_page_,1)+ href=+pageStr.replace(_page_,1)+>首页</A> ;
if(pageNow<=1)
str += 上一页 ;
else
str += <A href=+pageStr.replace(_page_,(pageNow-1))+ href=+pageStr.replace(_page_,(pageNow-1))+>上一页</A> ;
if(pageNow>=pageCount)
str += 下一页 ;
else
str += <A href=+pageStr.replace(_page_,(pageNow+1))+ href=+pageStr.replace(_page_,(pageNow+1))+>下一页</A> ;
if(pageNow>=pageCount)
str += 尾页 ;
else
str += <A href=+pageStr.replace(_page_,pageCount)+ href=+pageStr.replace(_page_,pageCount)+>尾页</A> ;
str += 跳到<input type=\text\ name=\txtpage\ size=\3\>页;
str += <input type=\button\ value=\GO\ onclick=\pagego0(document.frmpage.txtpage.value,+pageNow+,+pageCount+,+pageStr+)\></form>;
return str;
}
function pagego0(pageGo,pageNow,pageCount,pageStr){
if(pageGo>=1 && pageGo<=pageCount && pageNow!=pageGo)
window.location = pageStr.replace(_page_, pageGo);
}

另外这种方法即使不用模板,也可以用,也一样是一种好的分页解决方案,只要将{recordcount}这种类似的字符串用变量的值替换就可以了。


评论


亲,登录后才可以留言!