DedeCMS 的自定义变量主要分为两大类:

- 系统全局变量:由系统在运行时自动生成,如
{dede:global.cfg_webname/}(网站名称)、{dede:global.cfg_weburl/}(网站地址) 等。 - 用户自定义变量:由网站管理员在后台设置,或由开发者在模板/标签中定义,用于存储特定的信息,如公司简介、联系方式、QQ 号、备案号等。
我们主要讨论的就是 用户自定义变量 的调用,它的调用方式又根据定义位置的不同而有所区别。
第一步:如何定义/设置自定义变量?
在调用之前,你首先需要创建这个变量,主要有两种方式:
通过后台【基本参数】设置(最常用)
这种方式适合设置网站的全局性、固定不变的变量,比如公司地址、备案号、客服电话等。
-
登录 DedeCMS 后台。
(图片来源网络,侵删) -
在左侧菜单栏找到 【系统】 -> 【系统基本参数】。
-
在打开的页面中,你会看到几个选项卡,通常我们使用 【核心设置】 或 【其他选项】。
-
找到 “自定义变量” 的设置区域,它通常是一个文本域,里面可能已经有一些示例代码。
-
按照以下格式添加你的变量:
(图片来源网络,侵删)变量名|变量类型|变量说明|变量值(换行符隔开)示例: 假设我们要添加一个“公司地址”变量,变量名为
company_address,值为“北京市朝阳区xxx路xxx号”。在自定义变量文本框中输入:
company_address|text|公司地址|北京市朝阳区xxx路xxx号company_address:变量名(调用时使用)。text:变量类型(text 是单行文本,还有 textarea 多行文本等)。公司地址:变量说明(方便后台管理)。北京市朝阳区xxx路xxx号:变量值。
-
点击 【保存】 按钮。
在模板文件中直接定义(适用于动态内容)
这种方式适用于在某个特定模板页面中临时需要使用的变量,比如循环列表中某个字段的值。
通常使用 {dede:var} 标签来定义。
示例:
在列表页 list_article.htm 中,你想定义一个变量来存储当前栏目ID。
{dede:var name='typeid' value=''} <!-- value为空,会自动获取当前栏目ID -->
第二步:如何调用自定义变量?
定义好变量后,就可以在不同的地方调用它们了,调用方式也分为两种。
使用 {dede:global} 标签调用(推荐)
这是调用后台【基本参数】中设置的全局变量的标准方法。
语法:
{dede:global name='变量名'/}
示例: 调用我们刚才在后台设置的“公司地址”变量。
<div class="footer-info">
<p>公司地址:{dede:global name='company_address'/}</p>
</p>
进阶用法(带默认值): 如果变量可能没有设置,可以提供一个默认值,以防模板报错。
{dede:global name='company_address' default='请设置公司地址'/}
company_address 变量不存在,将显示“请设置公司地址”。
使用 {dede:var} 标签调用
这个标签主要用于调用在模板文件中通过 {dede:var} 定义的变量,或者在某些特定标签(如 {dede:arclist})循环体中调用子变量。
语法:
{dede:var name='变量名'/}
示例 1:调用模板中定义的变量
{dede:var name='typeid'/} <!-- 会输出上面定义的栏目ID -->
示例 2:在 {dede:arclist} 中调用字段
这是 {dede:var} 一个非常重要的用途,当你在 {dede:arclist} 循环内部时,可以直接使用 var 标签来调用当前文章的字段。
{dede:arclist titlelen='30' row='5'}
<li>
<a href="[field:arcurl/]">[field:title/]</a>
<!-- 调用文章的发布时间 -->
发布时间:{dede:var name='pubdate' function='MyDate('Y-m-d', @me)'/}
<!-- 调用文章的点击量 -->
点击量:{dede:var name='click'/}
</li>
{/dede:arclist}
注意: 在 {dede:arclist} 等循环标签内部,{dede:var name='pubdate'} 等价于 {dede:field name='pubdate'}。{dede:field} 是专门用于调用字段值的标签,在循环内部更常用。{dede:var} 的灵活性在于它还可以结合 function 属性进行数据处理。
总结与对比
| 场景 | 推荐标签 | 语法 | 示例 |
|---|---|---|---|
| 调用后台全局变量 | {dede:global} |
{dede:global name='变量名'/} |
{dede:global name='cfg_webname'/} |
| 调用模板内定义的变量 | {dede:var} |
{dede:var name='变量名'/} |
{dede:var name='typeid'/} |
| 在循环标签内调用字段 | {dede:field} 或 {dede:var} |
{dede:field name='字段名'/} |
{dede:arclist}...{dede:field name='title'/}...{/dede:arclist} |
常见问题与注意事项
- 变量名区分大小写:
{dede:global name='company_address'/}和{dede:global name='Company_Address'/}是两个不同的变量。 - 变量值中的特殊字符:如果变量值包含 或 等特殊字符,可能会导致模板解析错误,尽量避免在变量值中使用这些符号,或者使用 DedeCMS 提供的转义功能。
- 缓存问题:DedeCMS 有模板缓存,如果你在后台修改了全局变量,但前台页面没有更新,请进入 【系统】 -> 【一键更新网站】 -> 更新HTML 或 更新缓存。
- 命名规范:建议给变量名加上统一的前缀,如
my_或cfg_(cfg_已被系统占用),my_qq、my_icp,以避免与系统未来的变量名冲突。
希望这份详细的指南能帮助你完全掌握 DedeCMS 自定义变量的调用!
