很多人都知道织梦CMS自带一堆标签,但真用起来总有卡壳的时候。
举个最常见的例子,你要做一个侧边栏展示“近7天浏览量破千的美食文章+对应评论数前3的昵称”,翻遍自带的{dede:arclist}、{dede:field},甚至{dede:php}临时凑,要么逻辑跑不通,要么性能拉胯后台半天刷不出来。
这时候别再硬扛了,自定义标签才是破局的钥匙——就像你去外面吃饭自带调料包,合自己口味,还不用等老板半天改配方。
说白了,织梦的自定义标签就是把一段PHP代码封装成类似{dede:xxx}的调用标识。
你可以把织梦CMS想象成一个咖啡机,自带的标签是预设好的美式、拿铁、卡布按钮,按一下出固定口味;自定义标签就是你自己放咖啡豆、加奶泡、撒糖霜的“自定义菜单”,你想怎么调就怎么调,前提是你得知道咖啡机的零件在哪、怎么接线路。
零件在哪呢?记住两个核心路径就行:一个是/include/taglib/,这里放的是织梦标签的“驱动文件”,后缀都是.lib.php;另一个是后台核心-频道模型-自定义宏标记,适合新手玩那种简单的HTML+简单PHP拼接的标签。
这个不需要懂太多PHP语法,适合解决一些临时的、不涉及复杂数据库查询的需求,比如放一段统计代码、加一个固定的弹窗广告、或者是调用后台某篇固定文章的内容。

操作步骤超简单,打开后台,找到核心-频道模型-自定义宏标记,点新增:
保存后,在模板里直接粘贴{dede:mytongji/}就能调用了,是不是比复制粘贴到处找位置爽多了?
这个才是真的“自定义核心”,能解决刚才说的美食侧边栏那种复杂数据库查询的需求。
先给你个最简单的.lib.php模板框架,别改里面的固定内容,只改中间的业务逻辑就行:
```php CAttribute->Items,$attlist); extract($ctag->CAttribute->Items, EXTR_SKIP); $revalue = ''; // 数据库查询部分,这里先留空,后面给你补美食的例子 // 比如:近7天浏览量>1000的美食文章(假设美食的typeid是12) $time = time() - 7243600; $sql = "SELECT id,title,click,typeid FROM @__archives WHERE typeid=12 AND click>1000 AND pubdate>$time ORDER BY click DESC LIMIT $row"; $dsql->SetQuery($sql); $dsql->Execute(); while($row = $dsql->GetArray()) { // 文章评论数查询(假设用的是自带的feedback表) $fbSql = "SELECT username FROM @__feedback WHERE aid='{$row['id']}' ORDER BY dtime DESC LIMIT 3"; $dsql->SetQuery($fbSql); $dsql->Execute('fb'); $usernames = []; while($fbRow = $dsql->GetArray('fb')) { $usernames[] = $fbRow['username']; } $usernamesStr = implode('、', $usernames); // 拼接HTML $revalue .= "把这段代码命名为myfood.lib.php,上传到/include/taglib/目录下,然后在模板里用{dede:myfood row='10' /}就能调用了,row参数是你刚才在attlist里定义的,可以自由改数量。
对了,要注意几个小细节:
还有个扎心的真相要告诉你,织梦CMS已经很久没更新了,自定义标签的时候尽量用原生PHP语法,别用太新的PHP版本特性,不然可能会报错。












易频IT社区是综合性互联网IT技术门户网站,专注分享网络技术、服务器运维、网络安全、编程开发、系统架构、云计算、大数据等行业干货,实时更新IT行业资讯、零基础教程、实战案例,为IT从业者、技术爱好者提供专业的学习交流平台。
Copyright © 2021-2026 易频IT社区. All Rights Reserved. 备案号:闽ICP备2023013482号 网站地图