smarty分页模板(用模板语法写分页)

      分页是一个我们经常要用到的、比较基本的小功能,你可以通过定义一个方法或类来对它进行封装、重用。而本文则是通过利用smarty独有的语法,以模版的方式进行封装,从而达到同样的目的。

      下面开始具体实现步骤:

      首先,创建3个文件,a.php(赋值变量,调用模版a.tpl),a.tpl(包含模版page.tpl,并传递变量)和page.tpl(具体分页逻辑实现)

    a.php

 1 //变量处理
 2 ...... ......省略
 3 ...... ......省略
 4 
 5 //赋值
 6 $smarty->assign('count', $count);    //记录总数
 7 $smarty->assign('pagesize', $pagesize);    //每页记录数
 8 $smarty->assign('totalpage', $totalpage);    //总页数
 9 $smarty->assign('page', $page);    //当前页数
10 $smarty->assign('url', $url);    //链接地址
11 $smarty->assign('class', $class);    //当前页样式类名
12 $smarty->assign('left', $left);    //数字链接左侧长度
13 $smarty->assign('right', $right);    //数字链接右侧长度
14 
15 //显示
16 $smarty->display('a.tpl');

  a.tpl 

1 //循环输出每条内容
2 ...... ...... ......省略
3 
4 //传递变量
5 {include 'page.tpl' count=$count pagesize=$pagesize totalpage=$totalpage page=$page url=$url class=$class left=$left right=$right}

  page.tpl

  这里简单讲一下分页逻辑的思路。

  首先我们最终是要得到一个分页字符串用来显示,这个字符串大概组成部分类似这样:首页 上一页 数字链接 下一页 尾页,所以我们可以从左到右一部分一部分进行判断处理,最后拼接即可。

 1 {if $totalpage>1}
 2     <a href="{$url}">首页</a>
 3 
 4     {if $page>1}
 5        <a href="{$url}?page={$page-1}">上一页</a>
 6     {/if}
 7 
 8     //数字链接
 9     {if $totalpage<$left+$right+1}    //总页数小于数字链接长度时
10        //定义循环起始值
11         {assign var="start" value=1}
12         {assign var="end" value=$totalpage}
13     {else}
14         {assign var="start" value=$page-$left}
15         {assign var="end" value=$page+$right} 
16         {if $page <= $left}        //当前页左侧长度不足指定值时
17             {assign var="start" value=1}
18             {assign var="end" value=$left+$right+1}
19         {/if}
20         {if $page >= $totalpage- $right}    //当前页右侧长度不足指定值时
21             {assign var="end" value=$totalpage}
22             {assign var="start" value=$totalpage-$left-$right}
23         {/if}
24     {/if}
25     //循环输出数字链接
26     {for $foo=$start to $end}
27         {if $page == $foo}
28             <a class="{$class}" href="{$url}?page={$foo}">{$foo}</a>
29         {else}
30             <a href="{$url}?page={$foo}">{$foo}</a>
31         {/if}
32     {/for}
33 
34     {if $page<$totalpage}
35         <a href="{$url}?page={$page+1}">下一页</a>
36     {/if}
37 
38     <a href="{$url}?page={$totalpage}">尾页</a>
39 {/if}

  这样,一个简单的分页模板就完成了,它的优点是前端展示比较灵活,不足的是逻辑处理相对不太方便。

 

 

 

 

 

 

posted @ 2013-10-23 12:46  Yanger90  阅读(1697)  评论(1编辑  收藏  举报