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

dede模板html网页href跳转
(图片来源网络,侵删)

跳转到网站内的其他静态页面

这是最简单的情况,比如从首页跳转到“关于我们”页面。

假设你的“关于我们”页面静态路径是 /about.html

方法1:直接使用绝对路径(推荐)

这是最稳定、最推荐的方式,无论DedeCMS的路径如何配置(如开启目录或关闭),都能正确跳转。

dede模板html网页href跳转
(图片来源网络,侵删)
<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模板html网页href跳转
(图片来源网络,侵删)

跳转到栏目列表页

使用 {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} <a href="[field:typelink/]">栏目名</a> 动态获取,适应静态/动态URL
使用 [field:arcurl/] <a href="[field:arcurl/]">文章标题</a> 动态获取,适应静态/动态URL
外部网站 使用完整URL <a href="https://www.example.com">外部链接</a> 标准HTML写法
指定动态页面 使用 {dede:global} 变量 <a href="{dede:global.cfg_phpurl/}/search.php">搜索</a> 保证动态路径正确

核心要点:

  1. 活用Dede标签:凡是需要DedeCMS动态生成URL的地方(如栏目、文章),务必使用 [field:xxx/]{dede:global.xxx}
  2. 善用绝对路径:对于静态页面和外部链接,直接使用绝对路径 (/page.htmlhttp://...) 是最不容易出错的。
  3. 路径配置:DedeCMS后台的“系统参数 -> 核心设置”中的“是否使用目录默认页”、“静态文件保存目录”等设置,会影响最终生成的URL,使用Dede标签可以让你无需关心这些底层配置。

遵循以上方法,你的Dede模板页面链接就能在各种情况下都稳定、正确地工作了。