DedeCMS 的标签系统非常强大,是其灵活性的核心,它允许你在不修改 PHP 核心代码的情况下,通过在 HTML 模板中插入特定的标签来动态生成内容。

核心概念:标签、模板、系统变量
- 形如
{dede:xxx}的代码块,是 DedeCMS 的指令,它会告诉系统在页面生成时,执行某个操作(如查询数据库、循环输出内容等),并将结果替换掉标签本身。 - 模板:
.htm或.html文件,是你网站页面的静态框架,里面包含了 HTML 结构、CSS 样式,以及嵌入其中的 DedeCMS 标签。 - 系统变量:如
{dede:field.name/}、{dede:field.seotitle/}等,用于输出当前文档(文章、栏目等)的某个特定字段值。
常用标签详解及 HTML 模板示例
下面我们以一个常见的“文章列表页”为例,展示如何使用标签来构建 HTML 结构。
假设我们要实现一个文章列表,每篇文章包含标题、发布时间、点击量和摘要。
循环标签:{dede:arclist}
这是最最常用的标签,用于在指定栏目或条件下循环输出文章列表。
基本语法:

{dede:arclist typeid='' row='' titlelen='' orderby=''}
<!-- 循环体,这里的代码会对每篇文章执行一次 -->
<li>
<a href="[field:arcurl/]">[field:title/]</a>
<span>[field:pubdate function="MyDate('Y-m-d', @me)"/]</span>
</li>
{/dede:arclist}
常用属性:
| 属性名 | 作用 | 示例 |
|---|---|---|
typeid |
指定栏目 ID,只显示该栏目下的文章,多个 ID 用逗号隔开。 | typeid='5,6,7' |
row |
返回的文章数量。 | row='10' |
orderby |
排序方式,常用值:pubdate (发布时间)、hot (点击量)、click (同 hot)、id (文章 ID)。 |
orderby='hot' |
channelid |
指定频道模型 ID,默认为 1 (文章)。 | channelid='1' |
limit |
限制起始和结束。'start,end'。 |
limit='0,5' (从第 0 篇开始,取 5 篇) |
字段标签:{field:xxx}
{dede:arclist} 的循环体内部,使用 {field:xxx/} 来输出当前文章的各个字段值。
常用字段:
| 字段名 | 说明 | 示例 |
|---|---|---|
[field:title/] |
。 | <a href="[field:arcurl/]">[field:title/]</a> |
[field:arcurl/] |
文章链接。 | <a href="[field:arcurl/]">查看详情</a> |
[field:pubdate/] |
发布时间,格式为 Unix 时间戳,通常需要配合 function 进行格式化。 |
[field:pubdate function="MyDate('Y-m-d', @me)"/] |
[field:click/] |
文章点击量。 | <span>阅读:[field:click/]</span> |
[field:shorttitle/] |
。 | [field:shorttitle/] |
[field:description/] |
<p>[field:description/]</p> |
|
[field:litpic/] |
文章缩略图。 | <img src="[field:litpic/]" alt="[field:title/]"> |
[field:textlink/] |
带链接的标题(<a href="...">标题</a>)。 |
[field:textlink/] |
实战:构建一个完整的文章列表 HTML 模板
下面是一个完整的列表页 list_article.htm 模板示例,它结合了 HTML 结构、CSS 样式和 DedeCMS 标签。

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">{dede:field.title/} - {dede:global.cfg_webname/}</title>
<meta name="keywords" content="{dede:field.keywords/}" />
<meta name="description" content="{dede:field.description function='html2text(@me)'/}" />
<style>
/* 一些简单的样式 */
body { font-family: Arial, sans-serif; line-height: 1.6; }
.container { width: 80%; margin: 20px auto; }
.article-list { list-style: none; padding: 0; }
.article-list li { border-bottom: 1px solid #ccc; padding: 15px 0; }
.article-list li:last-child { border-bottom: none; }
.article-title { font-size: 18px; font-weight: bold; }
.article-title a { color: #333; text-decoration: none; }
.article-title a:hover { color: #0066cc; }
.article-meta { font-size: 12px; color: #999; margin-top: 5px; }
.article-summary { font-size: 14px; color: #666; margin-top: 10px; }
</style>
</head>
<body>
<div class="container">
<h1>{dede:field.title/}</h1>
<p>当前位置:{dede:field.position/}</p>
<ul class="article-list">
<!--
arclist 标签开始:
typeid='': 留空表示显示当前栏目及其所有子栏目的文章。
row='10': 显示 10 篇文章。
orderby='pubdate': 按发布时间倒序排列。
-->
{dede:arclist typeid='' row='10' orderby='pubdate'}
<li>
<div class="article-title">
<a href="[field:arcurl/]">[field:title/]</a>
</div>
<div class="article-meta">
发布时间:[field:pubdate function="MyDate('Y-m-d H:i', @me)"/] | 点击量:[field:click/]
</div>
<div class="article-summary">
[field:description function='cn_substr(@me, 100)'/]...
<!-- 如果摘要为空,则截取正文内容 -->
<a href="[field:arcurl/]">[field:array runphp='yes']if(@me['description']=='')@me='阅读全文';else @me='查看更多';[/field:array]</a>
</div>
</li>
{/dede:arclist}
</ul>
<!--
分页标签
这会自动生成分页链接,如:首页 上一页 1 2 3 4 5 下一页 末页
-->
<div class="pagination">
{dede:pagelist listsize='5' listitem='index,pre,next,end,option'}
</div>
</div>
</body>
</html>
高级标签与技巧
条件判断:{dede:if} / {dede:else}
用于根据条件输出不同的 HTML 结构,只有当文章有缩略图时才显示 注意: 在字段标签中使用 你也可以在系统里自定义函数,然后在标签中调用。 用于输出栏目列表。 当标签不生效或输出异常时,可以按以下步骤排查: 掌握 DedeCMS 的标签系统,就是掌握了定制网站内容展示方式的核心技能,关键在于: 通过不断地练习和查阅官方文档,你会越来越熟练地运用这些标签来构建出功能丰富、样式美观的网站。<img>
{dede:arclist row='5'}
<li>
{dede:if isset([field:litpic/]) && ([field:litpic/] != '')}
<img src="[field:litpic/]" alt="[field:title/]" style="width:100px; float:left; margin-right:10px;">
{/dede:if}
<a href="[field:arcurl/]">[field:title/]</a>
<p>[field:description/]</p>
</li>
{/dede:arclist}
{dede:if} 的语法比较严格,isset() 函数和 && 逻辑与的写法需要符合 PHP 规则。自定义函数
function 属性调用 PHP 函数来处理数据,这在上面已经展示过。[field:pubdate function="MyDate('Y-m-d', @me)"/]
MyDate 是 DedeCMS 内置的日期格式化函数。@me 代表当前字段的原始值。交叉栏目标签:
{dede:channel}<!-- 输出顶级栏目 -->
{dede:channel type='top'}
<li><a href="[field:typelink/]">[field:typename/]</a></li>
{/dede:channel}
<!-- 输出当前栏目的子栏目 -->
{dede:channel type='son' noself='yes'}
<li><a href="[field:typelink/]">[field:typename/]</a></li>
{/dede:channel}
标签的调试与问题排查
{dede:arclist} 而不是 {dede:arcList}。arclist, channel)必须成对出现,{dede:xxx} 和 {/dede:xxx}。
arclist, channel, list 等是基石。[field:xxx/ 是填充内容的关键。
