zoukankan      html  css  js  c++  java
  • 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}

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

  • 相关阅读:
    Python-产生随机长度的密码
    Python-双色球
    Python-产生手机号码
    Word操作笔记
    1035 最长的循环节
    B. Recover the String
    uva11752 The Super Powers
    UVA11754
    GCD
    D. Persistent Bookcase(Codeforces Round #368 (Div. 2))
  • 原文地址:https://www.cnblogs.com/Yanger90/p/3381551.html
Copyright © 2011-2022 走看看