新手必看!DedeCMS 全局标签超全攻略,一文搞定模板调用

宝子们!做 DedeCMS 模板时,全局标签堪称 “万能钥匙”,能在所有页面畅通无阻地调取数据!今天手把手拆解最常用的arclistchannelloop等标签,附超详细参数解析 + 实战范例,小白也能秒变模板高手~

一、「万能列表王」arclist:90% 的列表调用都靠它

📌 核心功能

调取文章、商品等主从表模型数据,imglist、imginfolist等都是它的 “马甲”,换个参数就能切换显示风格,新手必学!

📝 语法公式

markdown

  1. {dede:arclist
  2. typeid='' <!-- 栏目ID,首页可用逗号分隔多个栏目 -->
  3. row='10' <!-- 显示条数,默认10 -->
  4. titlelen='30' <!-- 标题长度,超出自动截断 -->
  5. img <!-- 缩略图宽度 -->
  6. orderby='pubdate' <!-- 排序方式,支持hot/click/pubdate -->
  7. }
  8. <a href='[field:arcurl/]'>[field:title/]</a> <!-- 标题链接 -->
  9. <p>[field:infos/]...</p> <!-- 内容简介 -->
  10. {/dede:arclist}

⚙️ 参数解析(新手必记!)

参数名 作用 范例
col 分栏显示,col='2'显示 2 列,5.3 + 版本建议用<div>+CSS实现多列布局 <style>div{float:left;:50%}</style>{dede:arclist col='2'}...</div>
flag 标记特殊内容:头条h、推荐c、图片p,多个标记用逗号分隔 flag='h,c' 筛选头条 + 推荐文章
limit 限定记录范围,limit='1,2'表示从第 1 条开始取 2 条(起始 ID 从 0 开始) limit='0,5' 调取前 5 条数据
subday 限定天数内的文档,subday='30'表示 30 天内发布的内容 subday='7' 显示一周内新文章

✨ 实战技巧

给当天新内容加 “new” 标记
markdown

  1. [field:senddate runphp='yes']
  2. $ntime = time();
  3. if(($ntime - @me) < 86400) @me = "<font color='red'>(new)</font>";
  4. [/field:senddate]

多列布局避坑col>1时默认用表格布局,建议用 CSS 实现响应式:
markdown

  1. <div style="display:flex;gap:20px;">
  2. {dede:arclist row='10' col='2'}
  3. <div style="flex:1;">[field:textlink/]</div>
  4. {/dede:arclist}
  5. </div>

二、「栏目导航神器」channel:顶部菜单全靠它

📌 核心功能

生成网站栏目导航,支持顶级栏目、子栏目、当前栏目高亮,后台改栏目顺序后自动同步!

📝 语法公式

markdown

  1. {dede:channel
  2. type='top' <!-- top=顶级栏目,son=子栏目,self=同级栏目 -->
  3. currentstyle="<li>~typename~</li>" <!-- 当前栏目样式 -->
  4. }
  5. <li><a href='[field:typelink/]'>[field:typename/]</a></li>
  6. {/dede:channel}

✨ 进阶玩法

SEO 优化:去除链接中的 index.html
markdown

  1. {dede:channel type='top'}
  2. <li><a href='[field:typeurl function="str_replace("index.html","",@me)"/]'>[field:typename/]</a></li>
  3. {/dede:channel}

多级子栏目嵌套(适合复杂导航):
markdown

  1. {dede:channel type='top'}
  2. <dt>[field:typename/]</dt>
  3. {dede:channel type='son' typeid='[field:id/]'}
  4. <dd><a href='[field:typelink/]'>[field:typename/]</a></dd>
  5. {/dede:channel}
  6. {/dede:channel}

三、「万能数据调用」loop:跨表查询全搞定

📌 核心功能

直接查询数据库表,支持任意表(包括非 DedeCMS 表),适合调用会员、评论等数据。

📝 语法公式

markdown

  1. {dede:loop
  2. table='#@__archives' <!-- 表名,#@__代表系统表前缀 -->
  3. sort='click' <!-- 排序字段,如click=点击数 -->
  4. if='mid=1' <!-- 查询条件,如mid=1表示用户ID=1 -->
  5. }
  6. <a href='[field:arcurl/]'>[field:title/]</a>(点击:[field:click/])
  7. {/dede:loop}

✨ 实战场景

调取同数据库论坛会员
markdown

  1. {dede:loop table='phpwind87.pw_members' sort='uid' orderway='asc'}
  2. [field:uid/] - [field:username/]
  3. {/dede:loop}

筛选高分文章
markdown

  1. {dede:loop table='#@__archives' if='scores>80' row='5'}
  2. <strong>[field:title/]</strong> 得分:[field:scores/]
  3. {/dede:loop}

四、「全局配置管家」global:调取系统参数快准狠

📌 核心功能

获取系统配置变量,如网站名称、域名、版权信息,所有页面通用

📝 语法公式

markdown

  1. {dede:global name='cfg_webname'/} <!-- 网站名称 -->
  2. {dede:global name='cfg_cmspath'/} <!-- 网站根目录,如http://www.example.com -->

⚠️ 注意事项

  • 变量名不加$,如系统变量$cfg_webname对应name='cfg_webname'
  • 支持所有系统配置(除数据库密码),直接写在模板任意位置即可调用

五、「标签对比表」快速选对工具

标签 适用场景 核心优势 新手易错点
arclist 文章 / 商品列表 主从表模型通用,支持缩略图、排序 col属性 5.3 + 版本需配合 CSS 使用
channel 栏目导航 支持多级栏目、当前栏目高亮 type参数需根据模板环境选择(top/son/self)
loop 跨表 / 自定义查询 任意表数据调取,灵活度 MAX 表名需带前缀(如 #@__archives)
global 系统配置调用 一行代码调取全局变量,如网站名称、版权 变量名严格对应系统参数,区分大小写

六、新手避坑指南

  • 标签闭合:带底层模板的标签(如 arclist、channel)必须用双标签{/dede:tag},单标签需以/结尾
  • 变量作用域$_vars$fields需声明为global,否则模板可能取不到值
  • 路径问题[field:arcurl]是文章链接,[field:typelink]是栏目链接,别搞混!

总结:全局标签就是模板的 “瑞士军刀”

掌握这几个标签,90% 的模板调用需求都能搞定!从文章列表到栏目导航,从系统配置到跨表查询,灵活组合就能玩出花样~记得收藏这篇攻略,做模板时随时查!遇到具体问题评论区留言,手把手教你调通代码~