这是一个非常常见的需求,比如在首页制作一个广告位、友情链接或者一个特殊的按钮,点击后不是跳转到本站的某个栏目页,而是跳转到外部网站。

核心思路是:
利用 DedeCMS 的自定义属性功能,创建一个用于存放跳转链接的字段,然后在模板文件中通过判断这个字段是否存在来决定最终的 href 地址。
下面是详细的步骤,以给首页的一个广告位添加跳转功能为例。
第一步:在后台添加自定义属性
这一步的目的是为需要跳转的内容模型(广告”模型)增加一个“跳转链接”的字段。
- 登录 DedeCMS 后台。
- 进入 [核心] -> 模型管理],模型列表中,找到你想要修改的模型,如果你的广告位是调用“广告”模型,就点击“广告”后面的 [修改] 按钮,如果不确定,通常首页的广告位会使用一个独立的模型,或者你可以在“单页文档模型”或“自由列表”中设置,这里我们假设它是一个独立的模型,比如叫
ad。 - 进入模型字段管理页面后,点击 [添加新字段]。
- 填写字段信息:
- 字段名称:
redirecturl(这是数据库里的字段名,建议用英文,不能和已有字段重复) - 字段别名:
跳转链接(这是后台显示的名称,用中文方便识别) - 字段类型:
文本 (text) - 字段长度:
255(足够存放一个 URL) - 字段说明:
点击后跳转到的网址,请填写完整的URL ( http://www.example.com)(后台填写此字段时的提示信息) - 是否为常用字段: 勾选上,这样在后台发布内容时这个字段会显示在更醒目的位置。
- 其他选项:保持默认即可。
- 字段名称:
- 点击 [保存]。 模型已经有了一个名为“跳转链接”的自定义属性字段了。
第二步:在后台编辑内容并填写跳转链接
- 回到 DedeCMS 后台,找到你需要添加跳转功能的内容,进入 [核心] -> [广告管理] -> [广告列表],编辑一个广告条目。
- 在编辑页面,你会发现刚才添加的 [跳转链接] 字段已经出现在表单里了。
- 在“跳转链接”输入框中,填入你希望用户点击后跳转到的 完整网址,
https://www.baidu.com。- 重要:必须填写完整的 URL,包括
http://或https://。
- 重要:必须填写完整的 URL,包括
- 条目。
第三步:修改模板文件(关键步骤)
这是实现跳转逻辑的核心,你需要找到调用该内容的模板文件,并修改其 HTML 代码。

-
通过 FTP 或主机文件管理器,进入你的 DedeCMS 网站根目录下的
/templets/文件夹。 -
找到调用该内容的模板文件。
- 如果是首页的广告,通常是
/templets/default/index.htm。 - 如果是栏目列表,可能是
/templets/default/目录名/list.htm。 - 页,可能是
/templets/default/目录名/article_article.htm。
- 如果是首页的广告,通常是
-
用代码编辑器(如 VS Code, Sublime Text, Notepad++)打开该模板文件。
-
找到调用该内容
<a>标签的代码,它可能看起来像这样:<a href='{dede:field name='arcurl'/}' target="_blank"> <img src='{dede:field name='picurl'/}' alt='{dede:field name='title'/}' /> </a>或者只是一个链接:
<a href='{dede:field name='arcurl'/}' target="_blank">{dede:field name='title'/}</a> -
修改模板代码,加入跳转逻辑,我们将使用 DedeCMS 的
if标签进行判断。修改后的代码示例:
<a href="[field:redirecturl runphp='yes'] if(@me != '') @me = @me; else @me = @me; [/field:redirecturl]" target="_blank"> <img src='{dede:field name='picurl'/}' alt='{dede:field name='title'/}' /> </a>代码解析:
-
[field:redirecturl ...]:这是调用我们第一步添加的自定义属性字段redirecturl的值。 -
runphp='yes':表示对这个字段的值进行 PHP 代码处理,这是关键! -
if(@me != ''):@me在runphp中代表当前字段的值,这句代码的意思是:“redirecturl字段的值不为空(即填写了跳转链接)”。 -
@me = @me;:如果条件为真(不为空),那么最终的输出值@me就是我们填写的跳转链接。 -
else @me = @me;:如果条件为假(为空),那么最终的输出值@me就是它本身的值,也就是空。 -
更清晰、更推荐的写法(推荐使用):
<a href=" [field:redirecturl runphp='yes'] if(@me != '') { @me = @me; // 如果有跳转链接,就使用它 } else { @me = GetArcUrl(@me); // 如果没有,就使用默认的文档链接 (arcurl) } [/field:redirecturl] " target="_blank"> <img src='{dede:field name='picurl'/}' alt='{dede:field name='title'/}' /> </a>注意:
GetArcUrl()是 DedeCMS 的一个函数,用于获取文档的真实链接,这种写法更严谨,既支持跳转,又在没有跳转链接时回退到默认行为。
对于纯文本链接的修改:
<a href=" [field:redirecturl runphp='yes'] if(@me != '') { @me = @me; } else { @me = GetArcUrl(@me); } [/field:redirecturl] " target="_blank"> {dede:field.name/} </a> -
-
保存修改后的模板文件,并上传到服务器覆盖原文件。
第四步:更新缓存和生成页面
- 回到 DedeCMS 后台。
- 进入 [生成] -> [一键更新网站]。
- 建议先点击 [更新HTML] -> [更新首页],然后再更新对应的栏目页或内容页。
- 清理浏览器缓存,或者使用无痕模式访问你的网站,查看效果。
当你点击那个广告位或链接时:
- 如果你在后台为它填写了“跳转链接”,它会跳转到你指定的外部网站。
- 如果你没有填写“跳转链接”,它会像往常一样跳转到本站对应的页面。
总结与注意事项
- 核心三要素:添加自定义属性字段 -> 在后台填写值 -> 修改模板用
runphp判断。 runphp是关键:没有runphp='yes',if语句是无法生效的。- 字段名称:在模板中调用时,
[field:xxx]的xxx必须和第一步你设置的“字段名称”完全一致。 - URL 完整性:填写跳转地址时,务必写全
http://或https://。 - 模板路径:一定要修改正确的模板文件,否则看不到效果。
- 权限问题:确保你修改模板文件的 FTP 账号有写入权限。
通过以上步骤,你就可以灵活地在 DedeCMS 中使用自定义属性来实现各种跳转需求了。
