dedecms标签之自定义一个类似{dede:channelartlist}标签

自定义标签channelartlist

channelartlist标签 不同栏目不同显示方式解决方法
在使用channelartlist标记 时
有时要根据二级栏目 不同的栏目 内容以不同的样式显示
比方说 在一个大栏目下
有图片频道 文章频道
图片频道 以图片列表形式显示
文章频道 以文章列表形式显示
在大量重复栏目 类型网站 制作时 将遇到类似问题 如游戏网站 房地产网站 。。。。。

如果使用dede自带的 {dede:xxx runphp='yes'} 来进行判断 很不好写。

其实dede是标签是可以自己定制的
在include/taglib 目录下 存放着channelartlist.lib.php 文件 这个文件就是channelartlist标签

既然channelartlist标签 可以实现这样的功能
那么我们同样可以 自定义一个标签 在解决我们需要实现的功能(其实所有的模板问题 我们都可以自定义标签来解决)

不是大家所想象的那么复杂
我们来分析下channelartlist.lib.php 这个文件
其实里面很简单 就是一个 命名为function lib_channelartlist 的函数
然后在 46行有段sql 语句 来获取 子栏目信息

我们可以把 channelartlist.lib.php 复制一个 同样放在include/taglib 目录下

然后修改下文件名 例如 channelartlistex.lib.php
同样 我们也需要修改 function lib_channelartlist 为 function lib_channelartlistex
然后根据你的需要 修改sql 语句 比方说 你需要获取一个代码分享 频道
那么你 78行的sql 语句 修改为Select id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath
from `jcode_arctype` where $tpsql and typename='代码分享‘order by sortrank asc limit $totalnum

那么我们 的一个标签就做好啦

使用时
{dede:channelartlistex}
{dede:field name='typename'/}
{dede:arclist titlelen='60' row='8'}
[field:title/]

{/dede:arclist}

{/dede:channelartlistex}