DedeCMS的模板引擎有其特殊的标签语法,直接在HTML中写href有时会遇到路径问题或无法动态获取内容,下面我将从最基础到最复杂的场景,为你一一解析。

跳转到网站内的其他静态页面
这是最简单的情况,比如从首页跳转到“关于我们”页面。
假设你的“关于我们”页面静态路径是 /about.html。
方法1:直接使用绝对路径(推荐)
这是最稳定、最推荐的方式,无论DedeCMS的路径如何配置(如开启目录或关闭),都能正确跳转。

<a href="/about.html">关于我们</a>
方法2:使用相对路径
如果你的所有页面都在同一级目录下,可以使用相对路径。
<!-- 假设当前页面是 index.html,about.html 在同一目录下 --> <a href="about.html">关于我们</a> <!-- about.html 在下一级目录 pages/ 下 --> <a href="pages/about.html">关于我们</a> <!-- 如果返回上一级目录 --> <a href="../about.html">关于我们</a>
小结:对于静态页面,直接使用绝对路径 /about.html 是最不容易出错的。
跳转到DedeCMS生成的动态列表页或内容页
这是DedeCMS最常见的用法,需要用到Dede的内置模板标签。

跳转到栏目列表页
使用 {dede:type} 标签可以动态获取当前栏目的URL,非常灵活。
示例: 在首页的循环列表中,每个栏目项都跳转到对应的列表页。
{dede:channel type='top' row='8'}
<li>
<a href="[field:typelink/]">[field:typename/]</a>
</li>
{/dede:channel}
代码解析:
{dede:channel type='top' row='8'}: 调用顶级栏目,共8个。[field:typelink/]: 这是核心,它会自动解析为该栏目的完整URL(可能是动态的plus/list.php?tid=1或静态的/category/1.html,取决于你的后台设置)。[field:typename/]: 显示栏目的名称。
跳转到文章内容页
使用 {dede:list} 或 {dede:arclist} 标签来循环文章列表,并用 [field:arcurl/] 获取每篇文章的URL。
示例: 在首页或栏目页显示文章列表。
{dede:list pagesize='10'}
<div class="post-item">
<h2><a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a></h2>
<p class="post-meta">发布时间:[field:pubdate function="MyDate('Y-m-d',@me)'/] 作者:[field:writer/]</p>
<p class="post-content">[field:description/]...</p>
</div>
{/dede:list}
代码解析:
{dede:list pagesize='10'}: 调用当前栏目的文章列表,每页10条。[field:arcurl/]: 核心标签,自动解析为该篇文章的完整URL(可能是动态的plus/view.php?aid=123或静态的/article/123.html)。[field:title/]: 文章标题。[field:description/]:
跳转到外部网站
跳转到外部网站非常简单,直接使用完整的URL即可。
<!-- 跳转到百度 --> <a href="https://www.baidu.com" target="_blank">访问百度</a> <!-- target="_blank" 表示在新标签页中打开 -->
特殊跳转
跳转到首页
DedeCMS有专门的标签来生成首页链接,比直接写 或 /index.html 更规范。
<a href="{dede:global.cfg_basehost/}/">网站首页</a>
代码解析:
{dede:global.cfg_basehost/}: 这个标签会自动获取你在DedeCMS后台设置的“站点根网址”,http://www.yourdomain.com。- 这样写的好处是,即使你更换了域名,也只需要在后台修改一处配置,所有模板里的首页链接都会自动更新。
更简洁的写法(推荐): DedeCMS也提供了一个专门的首页标签。
<a href="{dede:global.cfg_homeurl/}">网站首页</a>
{dede:global.cfg_homeurl/} 通常等同于 {dede:global.cfg_basehost/}/,是获取首页URL的标准方式。
跳转到指定PHP动态页面
比如跳转到搜索页、用户中心等,需要使用Dede的全局变量标签 {dede:global name='cfg_phpurl'/}。
<!-- 跳转到搜索页 -->
<a href="{dede:global name='cfg_phpurl'/}/search.php">搜索</a>
<!-- 跳转到用户中心 -->
<a href="{dede:global name='cfg_phpurl'/}/member/index.php">会员中心</a>
代码解析:
{dede:global name='cfg_phpurl'/}: 这个标签会获取你在后台设置的“动态页面路径”,通常是/plus或/php,使用它可以保证路径的正确性。
总结与最佳实践
| 跳转目标 | 推荐方法 | 示例代码 | 优点 |
|---|---|---|---|
| 网站首页 | 使用全局变量标签 | <a href="{dede:global.cfg_homeurl/}">首页</a> |
灵活,更换域名无需修改模板 |
| 其他静态页面 | 使用绝对路径 | <a href="/about.html">关于我们</a> |
稳定,不受Dede配置影响 |
| 栏目列表页 | 使用 {dede:type}
| ||
| 页 | 使用 [field:arcurl/]
| ||
| 外部网站 | 使用完整URL | <a href="https://www.example.com">外部链接</a> |
标准HTML写法 |
| 指定动态页面 | 使用 {dede:global} 变量 |
<a href="{dede:global.cfg_phpurl/}/search.php">搜索</a> |
保证动态路径正确 |
核心要点:
- 活用Dede标签:凡是需要DedeCMS动态生成URL的地方(如栏目、文章),务必使用
[field:xxx/]或{dede:global.xxx}- 善用绝对路径:对于静态页面和外部链接,直接使用绝对路径 (
/page.html或http://...) 是最不容易出错的。- 路径配置:DedeCMS后台的“系统参数 -> 核心设置”中的“是否使用目录默认页”、“静态文件保存目录”等设置,会影响最终生成的URL,使用Dede标签可以让你无需关心这些底层配置。
- 善用绝对路径:对于静态页面和外部链接,直接使用绝对路径 (
遵循以上方法,你的Dede模板页面链接就能在各种情况下都稳定、正确地工作了。
