phpcms在自定义模块中的自定义标签分页
如果你是一个经验丰富的phpcms二次开发人员,本篇文章可以忽略不计,因为这里的写法自己都觉得很恶心
今天在开发一个网站自建了一个模块叫做论坛模块,目录名称:luntan
在论坛列表页面中需要显示所有的帖子并需要分页来显示,按照phpcms默认模版中标签定义方式
{pc:luntan action="get_send" num="2" page="$_GET[page]"} 按照这种写法在程序中data['limit'] = '0,2' 但是data[page] = NULL
这样接收不到页码,但是由于个人水平研究不明白这里应该要怎么才能将系统中的分页方法加载进来并让它好用,纠结好久想出了一个昏招,希望各位指正,并且如果有好的建议希望各位能够不惜时间,教我一下
要获得论坛发帖的列表需要一个获取的方法,如下
public function get_send($data){
$page = empty($_GET['page']) ? 1 : intval($_GET['page']);
$send_info = $this->luntan_send->listinfo($where = '', $order = '', $page, $pagesize = 20);
//$pages_send = $this->luntan_send->pages;
for($i = 0; $i < count($send_info); $i++){
$type_info = $this->luntan_type->get_one(array('type_id'=>$send_info[$i]['send_type_id']));
$send_info[$i]['send_type_name'] = $type_info['type_name'];
$reply_info = $this->luntan_reply->get_one(array('reply_send_id'=>$send_info[$i]['send_id']),'count(*) as reply_send_num');
$send_info[$i]['send_reply_num'] = $reply_info['reply_send_num'];
}
//echo $pages_send;
return $send_info;
}
注意在return上面一行的 echo $pages_send; 这里其实是借鉴了后台使用分页的方法让页面可以正常的显示出页码,并且可以做跳转
但是如果解开这个echo $pages_send;那么就没办法在页面中控制其显示的位置,为了让他能按照我的意愿来显示,在这个方法的下面又添加了一个方法,
public function get_send_page($data){
$page = empty($_GET['page']) ? 1 : intval($_GET['page']);
$send_info = $this->luntan_send->listinfo($where = '', $order = '', $page, $pagesize = 20);
$pages_send = $this->luntan_send->pages;
echo $pages_send;
return $send_info;
}
看到两个方法的名称的不同了,get_send 和 get_send_page 差了一个page,这样在里面的函数代码写法上后者由于只是需要显示页码,而前者只需要显示数据,则可以将get_send方法中用于获得页码的调用和输出屏蔽,即
//$pages_send = $this->luntan_send->pages;
......
//echo $pages_send;
而后者 get_send_page 方法中,则不需要下一步的for循环来处理数据至于返回什么数据也不重要,主要的是利用echo出来的页面,所以这两个函数相同的部分为
$page = empty($_GET['page']) ? 1 : intval($_GET['page']);
$send_info = $this->luntan_send->listinfo($where = '', $order = '', $page, $pagesize = 20);
如果要修改默认页面中显示的个数,需要同事修改两个方法中
$send_info = $this->luntan_send->listinfo($where = '', $order = '', $page, $pagesize = 20);一句的$pagesize变量
phpcms在自定义模块中的自定义标签分页的更多相关文章
- Django实现自定义template页面并在admin site的app模块中加入自定义跳转链接
在文章 Django实现自定义template页面并在admin site的app模块中加入自定义跳转链接(一) 中我们成功的为/feedback/feedback_stats/路径自定义了使用tem ...
- 自定义JSP中的Taglib标签之四自定义标签中的Function函数
转自http://www.cnblogs.com/edwardlauxh/archive/2010/05/19/1918589.html 之前例子已经写好了,由于时间关系一直没有发布,这次带来的是关于 ...
- phpcms V9 广告模块中广告模板修改
广告模块模板位置 \phpcms\modules\poster\install\templates\*.html 我的需求: 去掉边框控制代码,是否显示边框我将在页面模板中设置,因些需要删除模板中的以 ...
- Django自定义模型(model)中的字段标签
方法一: 在编辑页面中,每个字段的标签都是从模块的字段名称生成的. 规则很简单: 用空格替换下划线:首字母大写.例如:Book模块中publication_date的标签是Publication da ...
- Django中的自定义过滤器
一.为什么要自定义Django中的自定义过滤器:Django中提供了很多内置的过滤器和标签,详见链接django官网,主要有以下几个: autoescape(自动转义)block(模板继承)csrf_ ...
- python基础知识8——模块1——自定义模块和第三方开源模块
模块的认识 模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需 ...
- nginx自定义模块编写-根据post参数路由到不同服务器
nginx可以轻松实现根据不同的url 或者 get参数来转发到不同的服务器,然而当我们需要根据http包体来进行请求路由时,nginx默认的配置规则就捉襟见肘了,但是没关系,nginx提供了强大的自 ...
- nodeJS实战:自定义模块与引入,不同模块的函数传递及回调处理,exports与module.exports(基于nodejs6.2.0)
前言:本文基于上一篇文章中的源代码进行改写,地址:http://blog.csdn.net/eguid_1/article/details/52182386 注意:为什么不用module.export ...
- Python爬虫与数据分析之模块:内置模块、开源模块、自定义模块
专栏目录: Python爬虫与数据分析之python教学视频.python源码分享,python Python爬虫与数据分析之基础教程:Python的语法.字典.元组.列表 Python爬虫与数据分析 ...
随机推荐
- frame和iframe
1.frame不能脱离frameSet单独使用,iframe可以: 2.frame不能放在body中:如下可以正常显示: <!--<body>--> <frameset ...
- TCP的拥塞控制(转载)
1.引言 计算机网络中的带宽.交换结点中的缓存和处理机等,都是网络的资源.在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络的性能就会变坏.这种情况就叫做拥塞. 拥塞控制就是防止 ...
- VB.NET Shared(共享)和 Static(静态)关键字的区别
共享成员(Shared): VB.NET现在是支持真正的面向对象编程,可以继承.使用多态.共享成员 和静态成员. 共享成员就是在所有类和所定义派生类的实例之间共享的方法.属 性.字段和事件.所有使用类 ...
- study notes: high performance linux server programming
1:linux网络API分为:socker地址API,socker基础API,网络信息API 1,socker地址API:包含IP地址和端口(ip, port).表示TCP通信的一端. 2,socke ...
- tomcat组成及原理[转]
Tomcat安装好后打开目录;可以看到如下结构: bin :存放服务器脚本; conf :存放配置文件; lib :存放需要的JAR文件; wabapps :存放需要发布的Web应用程序及其部署文件; ...
- windows 数据类型转换为 dotnet 数据类型
Windows Data Type .NET Data Type BOOL, BOOLEAN Boolean or Int32 BSTR String BYTE Byte CHAR Char DOUB ...
- JavaScript Infinite scroll & Masonry
// infinitescroll() is called on the element that surrounds // the items you will be loading more of ...
- 正式学习React(五) Reactjs 的 PropTypes 使用方法
propTypes 使用來規範元件Props的型別與必需狀態 var Test = React.createClass({ propTypes: { // required requiredFunc: ...
- 检测android的网络链接状态
http://www.oschina.net/question/100267_61129?sort=default&p=1#tags_nav http://www.cnblogs.com/to ...
- iscroll5 版本下的 上拉,下拉 加载数据
上拉时候只是加载第一页的内容,可根据实际情况修改其中的代码. <section id="downwraper" class="nodeBottom bot0 bgf ...