调用当前模板页面的系统变量(最常用)
这是最基础也是最常见的情况,比如获取当前文章的标题、栏目名、发布时间等,这些变量通常由 DedeCMS 的底层引擎在页面加载时自动解析好。

直接使用系统全局变量
DedeCMS 定义了许多全局变量,可以直接在模板中使用,这些变量通常以 {dede:} 标签的形式出现,但有些也可以直接通过 {$变量名} 的简写形式调用。
示例:获取当前文章的标题
<h1>{dede:field.title/}</h1>
<!-- 或者使用简写形式(如果开启了模板引擎的简写功能) -->
<h1>{$title}</h1>
常用系统变量列表:
| 变量名 (标签形式) | 变量名 (简写形式) | 说明 |
|---|---|---|
{dede:field.title/} |
{$title} |
|
{dede:field.shorttitle/} |
{$shorttitle} |
|
{dede:field.description/} |
{$description} |
文章描述 |
{dede:field.body/} |
{$body} |
文章正文内容 |
{dede:field.pubdate function="MyDate('Y-m-d H:i',@me)"/} |
{$pubdate} |
发布时间(通常需要格式化) |
{dede:field.source/} |
{$source} |
文章来源 |
{dede:field.writer/} |
{$writer} |
文章作者 |
{dede:global.cfg_webname/} |
{$cfg_webname} |
网站名称 |
{dede:global.cfg_weburl/} |
{$cfg_weburl} |
网站地址 |
格式化时间变量:
pubdate 和 senddate 等时间戳变量通常需要格式化才能正常显示。

<!-- 方法1:在标签内使用 function 属性 -->
发布时间:{dede:field.pubdate function='MyDate("Y-m-d", @me)'/}
<!-- 方法2:在列表页使用 -->
发布时间:[field:pubdate function="MyDate('Y-m-d', @me)"/]
注意:
@me在这里代表当前字段的原始值。
调用当前栏目的变量
页,你可能需要获取当前栏目的信息。
<!-- 当前栏目名称 -->
<h2>{dede:field.typename/}</h2>
<!-- 当前栏目链接 -->
<a href="{dede:field.typeurl/}">查看更多</a>
在循环标签(如 arclist, list)中调用子级变量
这是动态网站开发中最频繁的操作,当你使用 {dede:arclist} 或 {dede:list} 等循环标签时,需要在标签内部通过 [field:变量名/] 的形式来调用每个条目(文章)的变量。
示例:在首页文章列表中调用文章信息

{dede:arclist titlelen='30' row='5'}
<li>
<a href="[field:arcurl/]">[field:title/]</a>
<span class="time">[field:pubdate function="MyDate('Y-m-d', @me)"/]</span>
<p class="desc">[field:description function="cn_substr(@me, 100)"/]...</p>
</li>
{/dede:arclist}
常用列表标签变量:
| 变量名 | 说明 |
|---|---|
[field:title/] |
|
[field:arcurl/] |
文章链接 |
[field:litpic/] |
文章缩略图 |
[field:pubdate function="MyDate('Y-m-d', @me)"/] |
格式化后的发布时间 |
[field:description/] |
文章简介 |
[field:click/] |
文章点击量 |
[field:info/] |
(通常配合截取函数使用) |
调用自定义字段(高级用法)
当你需要调用文章附加的自定义字段时,方法稍有不同。
调用普通文本/数字类型的自定义字段
假设你有一个自定义字段名为 jiazheng(家政服务类型)。
页 (article_article.htm) 调用:**
<!-- 方法1:使用 field 标签 -->
服务类型:{dede:field.jiazheng/}
<!-- 方法2:使用简写 -->
服务类型:{$jiazheng}
*在列表页 (`list_.htm) 或首页 (index.htm`) 调用:**
{dede:arclist}
服务类型:[field:jiazheng/]
{/dede:arclist}
调用编辑器类型的自定义字段
如果你的自定义字段是使用“编辑器”类型的(比如存储的是带 HTML 标签的富文本),直接调用会输出 HTML 代码,如果你只想显示纯文本,需要使用函数过滤。
假设自定义字段名为 anli(案例详情)。
<!-- 在内容页直接调用,会输出HTML -->
{dede:field.anli/}
<!-- 在内容页调用并去除HTML标签,只显示纯文本 -->
{dede:field.anli function='html2text(@me)'/}
<!-- 在列表页调用并去除HTML标签 -->
{dede:arclist}
[field:anli function='html2text(@me)'/]
{/dede:arclist}
调用单选/多选类型的自定义字段
如果你的自定义字段是“单选”或“多选”类型,存储的是选项的值(如 a,b,c),但你想显示选项的文本(如 “选项A, 选项B, 选项C”)。
你需要使用 GetFieldValue 函数。
<!-- 假设字段名为 'xuanxiang',选项值和文本的对应关系在后台设置 -->
{dede:field name='xuanxiang' function='GetFieldValue(@me, "xuanxiang")'/}
注意:
GetFieldValue函数的第一个参数是字段名,第二个参数是字段本身(用于区分不同字段),这种写法在某些版本中可能不推荐,更稳妥的方式是直接使用@me。<!-- 更推荐的写法 --> {dede:field name='xuanxiang' function='GetInnerText(@me)'/}或者直接调用,DedeCMS 通常能自动处理。
{dede:field.xuanxiang/}
在PHP代码块中定义变量并供标签使用
这是最灵活的方式,当系统变量无法满足需求时,你可以在模板中嵌入 PHP 代码,定义自己的变量,然后在标签中调用。
步骤:
- 在模板中使用
{dede:php}...{/dede:php}标签块嵌入 PHP 代码。 - 在 PHP 代码中定义一个变量,
$my_variable = 'Hello, Dede!';。 - 在其他标签中使用
{dede:var name='my_variable' /}来输出这个变量的值。
示例:
{dede:php}
// 获取当前栏目ID
$typeid = $this->Fields['typeid'];
// 查询该栏目的所有子栏目
$dsql = new DedeSql(false);
$dsql->SetQuery("SELECT * FROM `#@__arctype` WHERE reID = $typeid");
$dsql->Execute();
$sub_type_names = '';
while($row = $dsql->GetArray()){
$sub_type_names .= $row['typename'] . ', ';
}
// 去掉最后的逗号和空格
$sub_type_names = trim($sub_type_names, ', ');
{/dede:php}
<!-- 使用 dede:var 标签输出我们自定义的 PHP 变量 -->
<p>当前栏目的所有子栏目有:{dede:var name='sub_type_names' /}</p>
注意:
{dede:php}标签需要开启 DedeCMS 的 PHP 解析功能,且存在一定的安全风险,请确保你的网站环境安全。
总结与最佳实践
| 场景 | 调用方法 | 示例 |
|---|---|---|
| 当前页面系统变量 | {dede:field.字段名/} 或 {$字段名} |
{dede:field.title/} |
| 循环标签内变量 | [field:字段名/] |
[field:arcurl/] |
| 自定义字段(文本) | {dede:field.自定义字段名/} |
{dede:field.jiazheng/} |
| 自定义字段(富文本) | {dede:field.自定义字段名 function='函数名(@me)'/} |
{dede:field.anli function='html2text(@me)'/} |
| PHP 自定义变量 | {dede:php} 定义变量{dede:var name='变量名' /} 输出 |
{dede:var name='sub_type_names' /} |
核心要点:
- 分清场景:是静态内容页、动态列表页还是首页?
- 识别变量来源:是系统自带的、循环标签的,还是自定义的?
- 善用函数:对于时间、文本截取、HTML标签处理等,熟练使用
function属性和系统函数(如MyDate,cn_substr,html2text)是关键。
希望这份详细的指南能帮助你完全掌握在 DedeCMS 标签中调用变量值的方法!
