dede标签内如何调用变量名的值?

99ANYc3cd6
预计阅读时长 18 分钟
位置: 首页 DEDE建站 正文

调用当前模板页面的系统变量(最常用)

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

dede 在标签里调用变量名的值
(图片来源网络,侵删)

直接使用系统全局变量

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} 网站地址

格式化时间变量: pubdatesenddate 等时间戳变量通常需要格式化才能正常显示。

dede 在标签里调用变量名的值
(图片来源网络,侵删)
<!-- 方法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 在标签里调用变量名的值
(图片来源网络,侵删)
{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 代码,定义自己的变量,然后在标签中调用。

步骤:

  1. 在模板中使用 {dede:php} ... {/dede:php} 标签块嵌入 PHP 代码。
  2. 在 PHP 代码中定义一个变量,$my_variable = 'Hello, Dede!';
  3. 在其他标签中使用 {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' /}

核心要点:

  1. 分清场景:是静态内容页、动态列表页还是首页?
  2. 识别变量来源:是系统自带的、循环标签的,还是自定义的?
  3. 善用函数:对于时间、文本截取、HTML标签处理等,熟练使用 function 属性和系统函数(如 MyDate, cn_substr, html2text)是关键。

希望这份详细的指南能帮助你完全掌握在 DedeCMS 标签中调用变量值的方法!

-- 展开阅读全文 --
头像
dede提示页如何调用自定义表单字段?
« 上一篇 2025-12-20
织梦CMS更新后台首页后出现什么问题?
下一篇 » 2025-12-20

相关文章

取消
微信二维码
支付宝二维码

目录[+]