本文讲一下将织梦dede:channel标签增加一个limit参数的功能。像织梦这样的内容管理系统,其很大的优点就在于其标签的使用上,让开发者能很方便的使用,但是也正是因为是用人家定义的标签,虽然满足的大部分的需求,但是如果有一些特殊需求的时候却老是让自己感觉很痛苦,总有那么一点点小地方把人给难倒。这个时候,我们可以考虑一下修改一下他的标签库文件来满足我们的需求。其实很简单。
不知道大家是否遇到过这样的情况,一般情况下,项目是从策划-设计-制作(切割)-程序来完成的,但由于大家彼此的分工和职能不同,我们不可能完美的考虑到下级的需求,比如我们程序和美工直接,美工在切割的时候,已经经历的考虑到了程序实现,但是毕竟人家并不专业,他们可能更倾向于如何让自己更加的简单,所以有的时候切出来的东西很多程序认为不能嵌套程序,其实不然,我们做程序的,尤其是做过底层开发的,应该知道,其实无论是什么页面,程序都是可以实现的,只有美工可以写出来,程序就能实现,无论这个程序是开源程序还是自己写的程序。要坚信这一点。今天就结合一个小例子,来改一下下这个channel标签,让他具备arclist标签的limit功能。
limit是什么功能,就是源于sql语句中的limit子句,这个子句作用就是控制读取的位置和读取的数量,比如limit 0,2,就是从第一个开始读,读两条记录。我们来看一下这个例子

效果图片

代码

 

从效果可以看到是用channel标签调用某个栏目的子栏目,但是我们看起html代码,子栏目分两行,而用了两个p标签,如果我们不修改channel标签,是不容易用这个标签实现这个效果的,只能让美工改页面了,但是我们如果可以增加一个limit参数,调用两次这个标签,第一个p里面读取前4条,第二个p里面读取后四条即可。虽然这个功能很简单,但是我们贵在了解其标签的定义,这样我们就知道如何来修改和自己定义标签了。
修改方法如下
找到include/taglib/channel.lib.php文件,找到$attlist = “typeid|0,reid|0,row|100,col|1,type|son,currentstyle|,cacheid|”;大约在文件开始的位置第36行左右,这一句就定义了本标签要从模板中获取的参数,和参数的默认值,比如typeid就是栏目的id,默认情况下为0,既然我们要增加一个参数,就可以在其后台再加一个参数limit|0,即改为

下面有个extract函数,他的作用就是将数组降维,这样我们就可以直接使用$limit了,他的值就是我们在模板中使用时传入的值,下面要改什么就很清楚了,当然就是改调用栏目的sql语句了,找到if($type==’top’),大约是在第78行,这个地方就是标签中type参数的作用了。top是其顶级栏目,son是调用其子栏目,self是调用同级栏目,我们要将其下方的三个sql语句中limit子句中的 0,改为$limit,即可。即改为

如何使用,看我们这个例子模板中是如何写的

这样参数limit就是控制调取的开始位置了,limit=’4′就是从第4条开始调取,如果不写默认就是从第一个。不会影响原来标签的使用。

本文链接: http://www.521php.com/archives/1172/