本文讲的主要是将dede:channelartlist标签增加一个limit参数,让其可以控制读取的开始位置。其修改类似于织梦内置标签优化之二-dede:channel标签优化的修改。做过稍微复制一点的网站的都知道,网站除了有首页,列表页,内容页之外,还有一个封面页(频道页)。比如一个栏目有子栏目,那么这个栏目本身所对应的页面应该是封面页面,当然做成列表页也是可以的。这个dede:channelartlist标签就是一般在封面页(频道页)用到的,当然这个标签是可以在全局使用的,这里是举一个例子。
我给其增加limit参数的原因是我们经常会遇到这样的情况。如图:

很明显,我们看到这个封面页面其所有的子栏目,被一个广告位所分割成两部分,如果不修改这个标签的功能,我们很难达到这样的效果。而如果我们增加一个limit这样的参数,就可以控制读取开始位置,分两次读取或多次读取来达到这样的目的,这样,即使他被分成几部分,都不会受影响了。先来看一下我的代码实现

我们可以看到,我用了两次这个标签,第一次,指定limit开始位置为0,当然这里也可以不指定,默认就是从第一个,读取了三条,第二个,我指定开始位置为3,这样就从第4个开始读取,这里应该理解,因为这里是sql语句的定义,0是第一个,1是第2个。这样就达到了我们的目的,还可以看到,内部的arclist标签也是用到了我们织梦内置标签小优化之一——arclist标签优化的内容,结合limit和ispic,实现了没有默认图片的图文并茂功能。修改过程如下:

1、找到include/taglib/channelartlist.lib.php文件,这个就是这个标签的类库文件。找到$attlist = ‘typeid|0,row|20,cacheid|’;大约在第43行左右,这里就是定义获取的标签参数的,比如他会获取typeid参数,如果获取不到,默认就是0,所以,我们增加一个limit参数,让其默认值为0,即改为

2、修改读取的sql语句:找到下方的$dsql->SetQuery(“SELECT id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,大约在第78行左右,我们将其limit子句,加上我新增的limit参数。即改为

这里为什么可以直接使用$limit,就是和第二讲中的一样,他在上面有个extract函数,将我们之前定义好的获取参数进行了降维,这个函数大家可以查一下用法。这样就可以将数组的key变为变量直接使用了。这样整个修改就完成了,很简单吧,这样的修改同样不会影响以前的本标签的使用。

程序本天成,妙手偶得之!我们只是代码的搬运工!

转载请注明:http://www.521php.com/archives/1187/?replytocom=1001

目前有2 条留言

  1. 2013年04月10日 下午 3:41 周洪伟   |  引用  |  #1     

    来过

发表评论

昵称:

网址:

eg.博客主题调用的是Gravatar头像,你可以通过邮箱注册获得头像.
/ 快捷键:Ctrl+Enter