什么是 DedeCMS 标签?
你可以把 DedeCMS 标签理解为一种“模板指令”或“占位符”,当网站页面被访问时,DedeCMS 的解析引擎会扫描模板文件(.htm),找到这些标签,然后用数据库中的实际数据替换掉它们,最终生成一个完整的 HTML 页面发送给用户。

核心思想: 模板文件 + 标签 + 数据库 = 动态网页。
标签的基本语法
DedeCMS 的标签通常由 {dede:标签名 属性='值'} 和 {/dede:标签名} 组成,{/dede:标签名} 是结束标签,对于单标签(如 field)则不需要。
通用格式:
{dede:标签名 属性1='值1' 属性2='值2'}
// 这里是循环体或要显示的内容
{/dede:标签名}
示例:

{dede:arclist typeid='1' titlelen='30'}
<li>
<a href="[field:arcurl/]">[field:title/]</a>
</li>
{/dede:arclist}
最核心的几类标签
DedeCMS 的标签非常多,但绝大多数网站开发都离不开以下几类,我们逐一进行详细讲解。
内容列表类标签
这类标签用于在首页、列表页等位置调用文章、图集等内容的列表。
{dede:arclist} - 文章列表标签,使用频率最高的标签之一。
常用属性:
| 属性名 | 作用 | 示例 |
|---|---|---|
typeid |
指定栏目ID,调用该栏目下的文章,多个ID用逗号隔开。 | typeid='1,2,3' |
row |
调用文章的数量。 | row='10' (调用10篇文章) |
infolen |
内容简介长度。 | infolen='100' |
orderby |
排序方式,常用值:pubdate(发布时间), hot(点击量), id(文章ID)。 |
orderby='hot' |
orderway |
排序方式。desc(降序), asc(升序)。 |
orderway='desc' |
channelid |
指定模型ID。1=文章, 2=图集。 |
channelid='1' |
limit |
限制起始位置和数量,格式为 起始位置,数量。 |
limit='0,5' (从第0篇开始,取5篇) |
{dede:arclist} 内部常用子标签(在循环体内使用):
| 子标签 | 作用 |
|---|---|
[field:title/] |
|
[field:arcurl/] |
文章链接(非常重要!) |
[field:pubdate function='strftime("%Y-%m-%d",@me)'/] |
发布时间,function用于格式化时间 |
[field:click/] |
点击量 |
[field:litpic/] |
文章缩略图 |
[field:description/] |
文章摘要 |
[field:id/] |
文章ID |
完整实例:
<!-- 调用ID为1的栏目下的5篇最新文章,标题长度限制为20个汉字 -->
{dede:arclist typeid='1' row='5' titlelen='20' orderby='pubdate' orderway='desc'}
<div class="news-item">
<h3><a href="[field:arcurl/]">[field:title/]</a></h3>
<p class="info">发布时间:[field:pubdate function='strftime("%Y-%m-%d",@me)'/] | 点击:[field:click/]</p>
<p class="summary">[field:description function='cn_substr(@me,100)'/]...</p>
</div>
{/dede:arclist}
内容详情页类标签
这类标签只在文章详情页(article_article.htm)中使用,用于显示当前文章的详细信息。
{dede:field} - 字段标签,用于调用文章的单个字段。
常用属性:
| 属性名 | 作用 |
|---|---|
name |
指定要调用的字段名。 |
DedeCMS 常用文章字段:
| 字段名 | 作用 |
| :--- | :--- | | 文章标题 |
| pubdate | 发布时间 |
| click | 点击量 |
| source | 来源 |
| writer | 作者 |
| body | 文章正文内容 |
| description | |
| litpic | 缩略图 |
完整实例(在 article_article.htm 中):
<h1>{dede:field.title/}</h1>
<div class="article-info">
发布时间:{dede:field.pubdate function='strftime("%Y-%m-%d %H:%M:%S",@me)'/}
来源:{dede:field.source/}
作者:{dede:field.writer/}
点击:{dede:field.click/}
</div>
<div class="article-content">
{dede:field.body/}
</div>
栏目导航类标签
这类标签用于生成网站的栏目菜单。
{dede:channel} - 栏目列表标签。
常用属性:
| 属性名 | 作用 |
|---|---|
typeid |
指定父栏目ID,用于调用其子栏目。typeid='0' 表示调用顶级栏目。 |
row |
调用栏目数量。 |
type |
栏目类型。son 表示下级栏目,self 表示同级栏目。 |
{dede:channel} 内部常用子标签:
| 子标签 | 作用 |
|---|---|
[field:typename/] |
栏目名称 |
[field:typelink/] |
栏目链接 |
完整实例:
<!-- 调用所有顶级栏目 -->
{dede:channel type='son' typeid='0'}
<li><a href="[field:typelink/]">[field:typename/]</a></li>
{/dede:channel}
分页类标签
这类标签用于生成列表页的分页导航。
{dede:pagelist} - 分页列表标签。
常用属性:
| 属性名 | 作用 |
|---|---|
listsize |
显示的页码数量。 |
listitem |
显示的分页项目。info(总数), index(首页), pre(上一页), pageno(页码), next(下一页), end(尾页)。 |
完整实例:
<div class="pagelist">
{dede:pagelist listitem='index,pre,pageno,next,end' listsize='5'/}
</div>
标签的进阶用法
掌握了基础用法后,一些进阶技巧能让你更灵活地控制输出。
if 条件判断标签
用于根据条件显示不同的内容。
语法:
{dede:if 条件表达式}
// 条件为真时显示的内容
<span>这是满足条件的内容</span>
{else if 条件表达式}
// 或者另一个条件为真时显示的内容
<span>这是满足另一个条件的内容</span>
{else}
// 所有条件都不满足时显示的内容
<span>这是默认内容</span>
{/dede:if}
常用判断:
global.cfg_webname == '我的网站'field:typeid == '1'(判断当前栏目ID)field:click > 1000(判断点击量)
实例:
{dede:if field:typeid == '1'}
<p>您正在查看的是“公司新闻”栏目。</p>
{else if field:typeid == '2'}
<p>您正在查看的是“产品中心”栏目。</p>
{else}
<p>欢迎访问本站!</p>
{/dede:if}
function 函数调用
这是最强大的功能之一,用于对标签的值进行处理,如截取字符串、日期格式化等。
语法:
[field:字段名 function='处理函数(@me)']
常用函数:
| 函数 | 作用 | 示例 |
|---|---|---|
cn_substr(string, length) |
截取中文字符串,防止乱码。 | [field:description function='cn_substr(@me,100)'/] |
strftime(format, @me) |
格式化时间戳。 | [field:pubdate function='strftime("%Y-%m-%d",@me)'/] |
str_replace(find, replace, @me) |
字符串替换。 | [field:title function='str_replace("Dede","织梦",@me)'/] |
html2text(@me) |
将 HTML 标签转换为纯文本。 | [field:body function='html2text(@me)'/] |
实例:
<!-- 调用标题,如果标题超过20个字符,则截断并加上省略号 -->
{dede:arclist}
<h3>
[field:title function='(strlen(@me)>40 ? cn_substr(@me,40)."..." : @me)'/]
</h3>
{/dede:arclist}
自定义宏标签
如果你有一段常用的代码,不想每次都重复写,可以把它定义成一个“宏”。
步骤:
- 进入后台 -> 系统 -> 系统基本参数 -> 核心设置。
- 找到“自定义宏标签”输入框。
- 输入你的宏定义,格式为:
宏名=宏内容。myLink=<a href="http://www.example.com">我的网站</a> - 保存。
使用方法:
在模板中直接调用 {dede:myLink/} 即可。
常见问题与调试技巧
-
标签不生效,显示为
{dede:arclist /}- 原因: 模板文件没有被 DedeCMS 正确解析。
- 解决方法:
- 确保文件是
.htm后缀。 - 确保文件位于模板目录下。
- 在后台的“模板管理”中,检查并更新对应的模板文件。
- 清除网站缓存(后台 -> 系统 -> 站点清理 -> 清除所有缓存)。
- 确保文件是
-
如何找到字段名或标签名?
- 字段名: 进入后台 -> 内容管理 -> ,点击“高级内容模型”,可以看到所有可用的字段。
- 标签名/属性: 查阅 DedeCMS 官方文档,或在网上搜索“DedeCMS 标签大全”,DedeCMS 自带的
templets目录下的模板文件是最好的学习资料。
-
如何调用特定栏目(如“关于我们”)下的文章?
- 先在后台找到“关于我们”栏目的 ID。
- 在
arclist标签中使用typeid='这个ID'属性。
DedeCMS 标签学习路径建议:
- 先会用: 掌握
arclist、field、channel这三个最核心的标签,能做出一个简单的首页和列表页。 - 再理解: 学习
function函数,学会对数据进行处理,让页面显示更美观。 - 后精通: 学习
if条件判断和自定义宏,实现更复杂的逻辑和代码复用。
多看、多练、多模仿官方模板,是掌握 DedeCMS 标签最快的方法,希望这份详细的教程对你有帮助!
