什么是 DedeCMS 调用标签?
DedeCMS 调用标签是一种类似于 HTML 标签的专用代码,它被放在模板文件(.htm)中,当网站页面被访问时,DedeCMS 的解析引擎会识别这些标签,并根据标签的指令从数据库中提取相应的数据,最终将动态内容渲染到页面上。

基本语法格式:
{dede:标签名 属性='值' /}
{dede:...}:标签的开始和结束。标签名:要执行的具体功能,如arclist(文章列表)、arctitle(文章标题) 等。属性:控制标签行为的关键字和值,如typeid(栏目ID)、row(调用条数) 等。- 表示这是一个单标签,没有中间内容。
最常用、最核心的标签实例
文章列表调用 ({dede:arclist})
这是最最常用的标签,用于在首页、列表页等地方调用文章列表。
场景:在首页调用最新发布的 10 篇文章。
<ul class="news-list">
{dede:arclist row='10' titlelen='30' orderby='pubdate'}
<li>
<span class="date">[field:pubdate function="MyDate('m-d', @me)"/]</span>
<a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a>
</li>
{/dede:arclist}
</ul>
常用属性说明:

| 属性名 | 说明 | 示例 |
|---|---|---|
typeid |
指定栏目ID,调用该栏目下的文章,多个ID用逗号隔开。 | typeid='1,2' |
row |
调用文章的数量。 | row='8' |
infolen |
描述/摘要长度。 | infolen='100' |
orderby |
排序方式,常用值:pubdate(发布日期)、click(点击量)、id(ID)、rand(随机)。 |
orderby='click' |
orderway |
排序方向。desc(降序)、asc(升序)。 |
orderway='desc' |
channelid |
指定模型ID,1为文章。 | channelid='1' |
flag |
特殊属性。h (头条)、c (推荐)、p (图片)、j (跳转),多个用 隔开。 |
flag='h|c' (调用头条和推荐) |
常用字段说明 (通过 [field:xxx/] 调用):
| 字段名 | 说明 |
|---|---|
[field:title/] |
|
[field:arcurl/] |
文章链接 |
[field:pubdate/] |
发布日期 (时间戳格式) |
[field:description/] |
文章摘要 |
[field:litpic/] |
文章缩略图 |
[field:click/] |
文章点击量 |
[field:id/] |
文章ID |
日期格式化:
[field:pubdate function="MyDate('Y-m-d H:i:s', @me)"/]
@me:代表当前字段的原始值(这里是时间戳)。MyDate():DedeCMS 的内置函数。'Y-m-d H:i:s':PHP 的日期格式化字符。
页调用 ({dede:field})
页(article_article.htm)使用,用于获取当前文章的详细信息。
场景:在文章页显示标题、发布时间、来源、点击量等。

<h1>{dede:field.title/}</h1>
<div class="article-info">
<span>发布时间:{dede:field.pubdate function='GetDateTime(@me)'/}</span>
<span>来源:{dede:field.source/}</span>
<span>作者:{dede:field.writer/}</span>
<span>点击:<script src="{dede:field name='phpurl'/}/count.php?view=yes&aid={dede:field.aid/}&mid={dede:field.mid/}" type='text/javascript' language="javascript"></script> 次</span>
</div>
<div class="article-content">
{dede:field.body/}
</div>
常用字段说明:
| 字段名 | 说明 |
|---|---|
{dede:field.title/} |
当前文章标题 |
{dede:field.pubdate/} |
发布日期 |
{dede:field.shorttitle/} |
|
{dede:field.description/} |
文章摘要 |
{dede:field.body/} |
文章正文内容 |
{dede:field.source/} |
来源 |
{dede:field.writer/} |
作者 |
{dede:field.aid/} |
当前文章ID,非常重要! |
{dede:field.typename/} |
当前文章所在的栏目名称 |
栏目导航调用 ({dede:channel})
用于生成网站的栏目导航菜单。
场景:调用顶级栏目。
<nav>
<ul>
{dede:channel type='top' row='8'}
<li><a href="[field:typelink/]">[field:typename/]</a></li>
{/dede:channel}
</ul>
</nav>
常用属性说明:
| 属性名 | 说明 | 示例 |
|---|---|---|
typeid |
指定从哪个栏目开始调用。 | typeid='0' (从顶级开始) |
type |
栏目类型。top (顶级栏目)、son (下级栏目)、self (同级栏目)。 |
type='top' |
row |
调用栏目数量。 | row='10' |
当前栏目信息调用 ({dede:field})
在列表页(list_栏目ID.htm)使用,用于获取当前栏目的信息。
场景:在列表页显示当前栏目的名称和描述。
<div class="category-info">
<h2>{dede:field.typename/}</h2>
<p>{dede:field.description/}</p>
</div>
常用字段说明:
| 字段名 | 说明 |
|---|---|
{dede:field.typename/} |
当前栏目名称 |
{dede:field.description/} |
当前栏目描述 |
{dede:field.seotitle/} |
当前栏目SEO标题 |
{dede:field.typelink/} |
当前栏目链接 |
友情链接调用 ({dede:flink})
用于调用网站后台设置的友情链接。
场景:在页脚显示友情链接。
<div class="friend-links">
<h3>友情链接</h3>
{dede:flink row='24' type='text' titlelen='24'}
<a href="[field:url/]" target="_blank">[field:name/]</a>
{/dede:flink}
</div>
常用属性说明:
| 属性名 | 说明 | 示例 |
|---|---|---|
typeid |
指定链接分类ID。 | typeid='1' |
row |
调用链接数量。 | row='20' |
type |
显示类型。text (文字)、image (图片)。 |
type='text' |
调用 ({dede:myad} / {dede:sql})
-
广告调用 (
{dede:myad})场景:在页面指定位置调用后台添加的广告位。
{dede:myad name='topbanner'/}name的值是后台广告位管理中设置的“广告位标识”。 -
任意SQL查询调用 (
{dede:sql})场景:调用某个特定条件下的文章,或者调用自定义表单的数据等(高级用法)。
示例1:调用ID为 10 的栏目下的最新5篇文章
{dede:sql sql='Select * from dede_archives where typeid=10 order by pubdate desc limit 0,5'} <a href='/plus/view.php?aid=[field:id/]'>[field:title/]</a><br> {/dede:sql}注意:直接使用
sql标签有安全风险,请确保你的SQL语句是安全的,并且对用户输入进行了严格过滤。
高级技巧与常用组合
循环嵌套:调用子栏目及其下的文章
这是一个非常经典的需求,比如在首页显示每个一级栏目,并附带该栏目下的几篇文章。
{dede:channel type='top' row='8'}
<dl>
<dt><a href="[field:typelink/]">[field:typename/]</a></dt>
<dd>
{dede:arclist flag='c' row='5' titlelen='20' typeid='[field:id]'}
<a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a>
{/dede:arclist}
</dd>
</dl>
{/dede:channel}
关键点:在 arclist 中使用 typeid='[field:id]',这里的 [field:id] 是外层 {dede:channel} 循环中当前栏目的ID,从而实现了动态调用子栏目文章。
判断与条件输出 (if 语法)
在文章列表中,有时想对特定文章(如头条、图片集)进行特殊处理。
{dede:arclist row='5'}
<li>
<!-- 如果是头条 -->
[field:flag runphp='yes']
if(@me=='h') @me = "<span class='headline'>[头条]</span>";
else @me = "";
[/field:flag]
<!-- 如果是图片集 -->
[field:flag runphp='yes']
if(strpos(@me,'p') !== false) @me = "<span class='pic'>[图]</span>";
else @me = "";
[/field:flag]
<a href="[field:arcurl/]">[field:title/]</a>
</li>
{/dede:arclist}
runphp='yes':让标签支持PHP代码。
@me:代表当前字段的原始值,在 if 判断中,修改 @me 的值就等于修改了最终的输出。
分页标签 ({dede:pagelist})
在列表页(list_*.htm)底部使用,用于生成分页导航。
<div class="page-nav">
{dede:pagelist listsize='4' listitem='info,index,end,pre,next,pageno'}
</div>
常用属性说明:
| 属性名 | 说明 |
|---|---|
listsize |
显示的页码链接数量。 |
listitem |
显示的分页项。info(页数信息)、index(首页)、pre(上一页)、next(下一页)、end(尾页)、pageno(页码)。 |
实战案例:首页布局示例
<!DOCTYPE html>
<html>
<head>{dede:global.cfg_webname/}</title>
<meta name="description" content="{dede:global.cfg_description/}">
<meta name="keywords" content="{dede:global.cfg_keywords/}">
</head>
<body>
<!-- 顶部导航 -->
<header>
{dede:channel type='top' row='8'}
<a href="[field:typelink/]">[field:typename/]</a>
{/dede:channel}
</header>
<!-- 轮播图/焦点图 -->
{dede:myad name='index_focus'/}
<!-- 左侧主内容区 -->
<div class="main-content">
<!-- 栏目一:公司新闻 (调用ID为1的栏目下的文章) -->
<div class="news-box">
<div class="box-title">
<h2><a href="/plus/list.php?tid=1">公司新闻</a></h2>
<a href="/plus/list.php?tid=1" class="more">更多+</a>
</div>
<ul>
{dede:arclist typeid='1' row='5' titlelen='30' orderby='pubdate'}
<li><span>[field:pubdate function="MyDate('m-d', @me)"/]</span><a href="[field:arcurl/]">[field:title/]</a></li>
{/dede:arclist}
</ul>
</div>
<!-- 栏目二:产品中心 (调用ID为2的栏目下的文章,带缩略图) -->
<div class="product-box">
<div class="box-title">
<h2><a href="/plus/list.php?tid=2">产品中心</a></h2>
<a href="/plus/list.php?tid=2" class="more">更多+</a>
</div>
<ul>
{dede:arclist typeid='2' row='4' titlelen='20' orderby='pubdate' imgwidth='120' imgheight='90'}
<li>
<a href="[field:arcurl/]"><img src="[field:litpic/]" alt="[field:title/]"></a>
<a href="[field:arcurl/]">[field:title/]</a>
</li>
{/dede:arclist}
</ul>
</div>
</div>
<!-- 右侧边栏 -->
<div class="sidebar">
<!-- 关于我们 -->
<div class="widget">
<h3>关于我们</h3>
{dede:field name='description' runphp='yes'}
$str = @me;
@me = cn_substr($str, 200); // 截取200个字符
{/dede:field}
</div>
<!-- 联系我们 -->
<div class="widget">
<h3>联系我们</h3>
<p>电话:{dede:global.cfg_tel/}</p>
<p>邮箱:{dede:global.cfg_email/}</p>
</div>
<!-- 友情链接 -->
<div class="widget">
<h3>友情链接</h3>
{dede:flink type='text'/}
</div>
</div>
<!-- 页脚 -->
<footer>
<p>© {dede:global.cfg_powerby/} - {dede:global.cfg_webname/}</p>
</footer>
</body>
</html>
- 熟能生巧:DedeCMS 的标签虽然多,但最核心的就是
arclist和field,掌握了这两个,就能完成大部分网站搭建工作。 - 善用官方文档:DedeCMS 有非常详细的官方文档,遇到不熟悉的标签或属性,随时查阅是最好的方法。
- 安全第一:在使用
sql标签时,务必小心,防止SQL注入攻击。 - 命名规范:给栏目、文章、广告位等取一个清晰、规范的“标识”(name),方便在模板中调用。
希望这份详细的指南能帮助您更好地掌握 DedeCMS 的标签调用!
