文档章节

好专业的beetl代码

闲大赋
 闲大赋
发布于 2013/08/17 01:29
字数 524
阅读 2198
收藏 21

无意中看到 @渔泯小镇  写的beetl翻页代码,这是一个典型的显示逻辑较为复杂的场景,很考验模板语言

写的非常专业,

http://www.oschina.net/code/snippet_204433_21360

<%

002     var pageNumber = page.pageNumber;   // 当前页
003     var totalPage = page.totalPage;     // 总页数
004     var num_display_entries = 11;       // 每次显示多少页
005     var num_edge_entries = 2;           // 前后各多少页
006     var ellipse_text = "...";
007     // uri地址 如果不是/结束的 那么就表示带有参数,使用res风格
008     if (!strutil.endWith(uri,"/")) {
009         uri = uri + "-";
010     }
011      
012     if (page.totalRow > page.pageSize) {
013 %>
014 <div class="pagin clearfix">
015     <div class="pagin-head">
016 <%
017         // 上一页
018         if(pageNumber != 1) {
019             printf("<a href='%s%s'>&lt;</a>",uri,pageNumber-1);
020         } else {
021             printf("<span class='current prve'>&lt;</span>");
022         }
023         // 当前页
024         //printf(" <span class='current'>%s</span>",pageNumber);
025          
026         // 下一页
027         if(pageNumber != totalPage) {
028             printf(" <a href='%s%s'>&gt;</a>",uri,pageNumber+1);
029         } else {
030             printf(" <span class='current next'>&gt;</span>");
031         }
032 %>
033     </div>
034     <div class="pagin-body">
035     <%
036         // 总页数大于 (显示的页数+前后显示) 表示需要显示很多页
037         var pageCount = totalPage - (num_display_entries + num_edge_entries * 2);
038         if (pageCount > 0) {
039             var i = 1;
040             var len = 0;
041             var _start = trunc(num_display_entries / 2);
042             var _end = _start;
043             if (num_display_entries%2 == 0) {
044                 _start = _start - 1;
045             }
046              
047             // 页码-前
048             if (pageNumber - _start - num_edge_entries >= num_edge_entries) {
049                 while(i < num_edge_entries + 1) {
050                     printf("<a href='%s%s'>%s</a> ",uri,i,i);
051                     i = i + 1;
052                 }
053                 printf("<span>%s</span> ",ellipse_text);
054                  
055                 i = pageNumber-_start;
056                 len = pageNumber + _end+1;
057             } else {
058                 len = num_display_entries+1;
059             }
060              
061             var show_num_edge_entries_next = totalPage - pageNumber - _end - num_edge_entries > 0;
062             if (!show_num_edge_entries_next) {
063                 i = pageNumber - _start;
064                 if (totalPage - pageNumber - _end < 0) {
065                     i = totalPage - num_display_entries+1;
066                 }
067                 len = totalPage + 1;
068             }
069              
070             // 显示中间的那串页码
071             while(i < len) {
072                 if (pageNumber == i) {
073                     printf("<span class='current'>%s</span> ",i);
074                 } else {
075                     printf("<a href='%s%s'>%s</a> ",uri,i,i);
076                 }
077                 i = i + 1;
078             }
079              
080             // 页码-后
081             if (show_num_edge_entries_next) {
082                 printf("<span>%s</span> ",ellipse_text);
083                 i = totalPage + 1 - num_edge_entries;
084                 while(i < totalPage + 1) {
085                     printf("<a href='%s%s'>%s</a> ",uri,i,i);
086                     i = i + 1;
087                 }
088             }
089         } else {
090             // 显示全部页码
091             var i = 1;
092             while(i < totalPage + 1) {
093                 if (pageNumber == i) {
094                     printf("<span class='current'>%s</span> ",i);
095                 } else {
096                     printf("<a href='%s%s'>%s</a> ",uri,i,i);
097                 }
098                 i = i + 1;
099             }
100         }
101     %>
102     </div>
103 </div>
104 <%
105     }
106 %>

© 著作权归作者所有

共有 人打赏支持
上一篇: beetl里使用json
下一篇: beetl 和 shrio 结合
闲大赋

闲大赋

粉丝 1176
博文 95
码字总数 88056
作品 10
西城
架构师
私信 提问
加载中

评论(5)

j
joydon
看的都想吐。烂<%漫天飞 恶不恶心。
闲大赋
闲大赋
说的是好专业的“beetl”代码,用的beetl模板语言。没有说好专业代码,你用js,php写,这些逻辑都得有,不信能写出花样来?
圊國圊國
圊國圊國
不敢恭维, 这中代码 我都不想维护,最好用js 生成
红薯的小黄瓜
红薯的小黄瓜
好难维护的代码1
Artlongs
Artlongs
27最原始的类ASP,JSP的写法!
05.Beetl标签函数以及定界符、占位符介绍---《Beetl视频课程》

本期视频实现了博客的详情页面; 内容简介:使用了标签函数layout完成详情功能 一起学beetl目录:https://my.oschina.net/u/1590490?tab=newest&catalogId=6214598 作者:GK ------------ 标...

Gavin-King
2018/12/11
0
0
剖析 “‘最好的模板引擎’Beetl剖析及与Tiny模板引擎对比”

http://blog.csdn.net/cndes/art ... 88771 这有一篇文章,说是剖析beetl模板引擎,并与同为国内的tiny模板引擎做对比(以下简称“剖析beetl”),其剖析过程公正,但结论却不正确(文中暗示的...

闲大赋
2016/07/14
0
9
09.ajax局部渲染---《Beetl视频课程》

本期视频实现分类实时获取; 内容简介:使用了局部渲染技术,实现分类的实时获取 一起学beetl目录:https://my.oschina.net/u/1590490?tab=newest&catalogId=6214598 作者:GK ------------...

Gavin-King
2018/12/12
0
0
beetl模板引擎的好玩的地方

Beetl2.x即将发布,性能,功能上已经非常卓越了,这里介绍一下beetl的好玩的地方,使用者可以定制beetl很多特性 1 自定义控制语句定界符: 开发者可以根据自己喜爱定义<% %>作为控制语句定界...

闲大赋
2014/02/14
0
1
Java 论坛程序--beetl-bbs

beetl-bbs 是在beetl官网php免费论坛被黑后,基于java开发的论坛,具备发帖,回复,消息通知,缓存等常用用功能,采用技术有spring boot,beetl 和 beetlsql。整体代码较少,可以是学习sprin...

闲大赋
2016/12/29
5.1K
4

没有更多内容

加载失败,请刷新页面

加载更多

数据库篇多表操作

第1章 多表操作 实际开发中,一个项目通常需要很多张表才能完成。例如:一个商城项目就需要分类表(category)、商品表(products)、订单表(orders)等多张表。且这些表的数据之间存在一定的关系...

stars永恒
28分钟前
0
0
nginx日志自动切割

1.日志配置(Nginx 日志) access.log----记录哪些用户,哪些页面以及用户浏览器,IP等访问信息;error.log------记录服务器错误的日志 #配置日志存储路径:location / {      a...

em_aaron
昨天
1
0
java 反射

基本概念 RTTI,即Run-Time Type Identification,运行时类型识别。RTTI能在运行时就能够自动识别每个编译时已知的类型。   要想理解反射的原理,首先要了解什么是类型信息。Java让我们在运...

细节探索者
昨天
1
0
推荐转载连接

https://www.cnblogs.com/ysocean/p/7409779.html#_label0

小橙子的曼曼
昨天
3
0
雷军亲自打造的套餐了解下:用多少付多少

12月28日消息,小米科技创始人兼CEO雷军微博表示,小米移动任我行套餐方案,原则上就是明明白白消费,用多少付多少,不用不花钱!上网、电话和短信都是一毛钱,上网0.1元/M,电话0.1元/分钟,...

linuxCool
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部