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
这里简单讲一下分页逻辑的思路。
首先我们最终是要得到一个分页字符串用来显示,这个字符串大概组成部分类似这样:首页 上一页 数字链接 下一页 尾页,所以我们可以从左到右一部分一部分进行判断处理,最后拼接即可。
{if $totalpage>1}
<a href="{$url}">首页</a>
{if $page>1}
<a href="{$url}?page={$page-1}">上一页</a>
{/if}
//数字链接
{if $totalpage<$left+$right+1} //总页数小于数字链接长度时
//定义循环起始值
{assign var="start" value=1}
{assign var="end" value=$totalpage}
{else}
{assign var="start" value=$page-$left}
{assign var="end" value=$page+$right}
{if $page <= $left} //当前页左侧长度不足指定值时
{assign var="start" value=1}
{assign var="end" value=$left+$right+1}
{/if}
{if $page >= $totalpage- $right} //当前页右侧长度不足指定值时
{assign var="end" value=$totalpage}
{assign var="start" value=$totalpage-$left-$right}
{/if}
{/if}
//循环输出数字链接
{for $foo=$start to $end}
{if $page == $foo}
<a class="{$class}" href="{$url}?page={$foo}">{$foo}</a>
{else}
<a href="{$url}?page={$foo}">{$foo}</a>
{/if}
{/for}
{if $page<$totalpage}
<a href="{$url}?page={$page+1}">下一页</a>
{/if}
<a href="{$url}?page={$totalpage}">尾页</a>
{/if}
这样,一个简单的分页模板就完成了,它的优点是前端展示比较灵活,不足的是逻辑处理相对不太方便。
smarty分页模板(用模板语法写分页)的更多相关文章
- Flask 的 template模板 与 jinja2语法
Flask 的 template模板 与 jinja2语法 Flask使用的是Jinja2模板,所以其语法和Django基本无差别 1.模板基本数据的渲染 变量 {{..}} 列表 {% for it ...
- thinkPHP 模板中的语法知识 详细介绍(十二)
原文:thinkPHP 模板中的语法知识 详细介绍(十二) 本章节:介绍模板中的语法,详细的语法介绍 一.导入CSS和JS文件 ==>记住常量的是大写 1.css link .js sc ...
- asp.net 分页-自己写分页控件
去年就发表过asp.net 分页-利用后台直接生成html分页 ,那种方法只是单纯的实现了分页,基本不能使用,那时就想写个自己的分页控件,无奈能力有限.最近有点时间了,就自己做出了这个分页控件.我承认 ...
- Ajax写分页查询(实现不刷新页面)
获取数据库中大量的信息显示在页面上,必然要使用到分页查询: 若不使用Ajax,而是用其他的方法,肯定是要刷新页面的,用户体检很不好, 所以最好使用Ajax的方法写分页查询: 1.先来找一张数据很多的表 ...
- 用ajax写分页查询-----2017-05-17
要写分页,首先你得清楚,一页你想显示多少条信息?如何计算总共显示的页数? 先说一下思路: (1)从数据库读取数据,以chenai表为例,读取所有留言信息.并能够实现输入发送者,可以查询该发送者的留言总 ...
- python MVC、MTV 框架介绍 Django 模板系统常用语法
Django 框架简介一.MVC框架和MTV框架1.MVC 全名Model View Controller,是软件工程中的一种软件架构模式,把软件系统分为三个基本部分.优势: 耦合性低 重用性高 生命 ...
- django 常用方法总结 < 手写分页-上传头像-redis缓存,排行 ...>
1.不使用自带模块<Paginator>的手写分页功能views.pydef post_list(request): page = request.GET.get('page', 1) # ...
- (9)模板层 - templates(模板语言、语法、取值、过滤器、变量的使用)
django的模板语言:DTL 模板语言的变量传入 这个是标签 {{ 变量名 }} {{ 变量名 }} #模板语言的替换可以在模板中的任意位置生效 PS:通过 . 可以做深度查询 模板语言的过滤器 ...
- 如何用ajax写分页查询(以留言信息为例)-----2017-05-17
要写分页,首先你得清楚,一页你想显示多少条信息?如何计算总共显示的页数? 先说一下思路: (1)从数据库读取数据,以chenai表为例,读取所有留言信息.并能够实现输入发送者,可以查询该发送者的留言总 ...
随机推荐
- 云计算中iaas、paas、saas的区别和联系
概念: iass : Infrastructure(基础设施)-as-a-Service, paas : Platform(平台)-as-a-Service, saas : Software(软件)- ...
- eclipse运行WordCount
1) 可以完全参考http://www.cnblogs.com/archimedes/p/4539751.html在eclipse下创建MapReduce工程,创建了MR工程,并完成WordCount ...
- Appium下Android keyevent整理
keycode 3:首页(Home key) keycode 4:返回键(Back key) keycode 5:电话键(Call key) keycode 6:结束通话键(End Call key) ...
- 2014多校第五场1010 || HDU 4920 Matrix multiplication(矩阵乘法优化)
题目链接 题意 : 给你两个n*n的矩阵,然后两个相乘得出结果是多少. 思路 :一开始因为知道会超时所以没敢用最普通的方法做,所以一直在想要怎么处理,没想到鹏哥告诉我们后台数据是随机跑的,所以极端数据 ...
- 知问前端——概述及jQuery UI
知问系统,是一个问答系统.主要功能:即会员提出问题,会员回答问题.目前比较热门的此类网站有:知乎http://www.zhihu.com.百度知道http://zhidao.baidu.com等.这里 ...
- 集成 Tomcat 插件到 Eclipse 的过程
Java代码: . 下载 Tomcat Tomcat6,下载地址:http://tomcat.apache.org/download-60.cgi,选择绿色版的 zip 进行下载(目前最新的 Tomc ...
- IOS开发-- NScoding 序列化
开篇 1到底这个序列化有啥作用? 面向对象的程序在运行的时候会创建一个复杂的对象图,经常要以二进制的方法序列化这个对象图,这个过程叫做Archiving. 二进制流可以通过网络或写入文件中(来源于某教 ...
- Java-J2SE学习笔记-查找一个String中,subString的出现次数
1.查找一个String中,subString的出现次数 2.代码 package Test; public class TestStringContain { public static void ...
- Hadoop完全分布式集群配置
1.前话 寒假实在太闲了,所以闲着无聊地去了解"大数据"这个新概念,这几年到处都在说什么大数据时代的,不能不让我感到好奇啊. 大数据有啥用?随便谷歌百度一大堆我也不多说了. 我自己 ...
- php 写入数据到MySQL以及从MySQL获取数据,页面出现乱码的解决方法
现象如标题. 解决思路: 1确定数据库charset是否是utf-8 a. charset不是utf-8 1, 更改数据库charset为utf-8 ALTER DATABASE db_name DE ...