- 获取某个栏目(频道)的链接:比如获取“公司简介”栏目的链接,用于首页的导航栏。
- 获取某篇文章(内容页)的链接:比如获取首页推荐文章的链接,用于展示文章标题并点击跳转。
下面我将分这两种情况,为你详细讲解在 DedeCMS 中获取链接的方法,并提供最常用和最推荐的代码。

(图片来源网络,侵删)
获取单个栏目(频道)的链接
这是最基础也是最常用的操作,通常用在网站的导航菜单中。
场景:
假设你的导航栏有一个“关于我们”的栏目,你想在首页模板中获取它的链接。
步骤:
-
登录后台,找到栏目ID
- 登录你的 DedeCMS 后台。
- 进入「核心」 -> 「频道管理」。
- 找到你的目标栏目(关于我们”),记下它的 栏目ID(比如是
5)。
-
在首页模板中使用
GetTopType或GetType函数 DedeCMS 提供了内置的函数来获取栏目信息。
(图片来源网络,侵删)-
GetTopType获取顶级栏目信息- 用途:如果你的“关于我们”是顶级栏目,或者你只想获取它所属的顶级栏目的信息,使用这个。
- 语法:
{dede:field name='typeid' function="GetTopType(@me)/"}
-
GetType获取指定栏目ID的信息- 用途:如果你明确知道栏目的ID,想获取该栏目的详细信息(包括链接),使用这个更直接。
- 语法:
{dede:field name='typeid' function="GetType(@me)/"}
-
-
编写代码
示例1:使用栏目ID直接获取(推荐)
(图片来源网络,侵删)在你的首页模板文件(通常是
/templets/default/index.htm)中,导航栏的代码可以这样写:<a href="[field:typelink function='str_replace("{cmspath}","",@me)'/]">关于我们</a>代码解释:
[field:typelink ...]:这是一个自定义字段,用来调用GetType函数返回的typelink值。function='GetType(@me)/':这是核心。@me会替换成当前字段的值,在这里我们直接传入栏目ID。GetType(5)会返回一个包含栏目信息的数组。typelink:是GetType函数返回的数组中的一个键,它代表了该栏目的完整链接地址(/about/)。str_replace("{cmspath}","",@me):这是一个非常重要的处理步骤,DedeCMS 生成的链接有时会包含网站的绝对路径(如http://www.yoursite.com{cmspath}/about/),{cmspath}是一个占位符。str_replace会把它替换掉,确保链接是相对路径,这样网站无论放在哪个域名下都能正常工作。
示例2:在栏目循环中使用(更灵活)
如果你正在使用
{dede:channel}标签循环输出所有顶级栏目,那么获取链接就更简单了。{dede:channel type='top' row='8'} <li><a href="[field:typelink/]">[field:typename/]</a></li> {/dede:channel}代码解释:
{dede:channel type='top'}:循环输出所有顶级栏目。[field:typelink/]:直接调用当前栏目的链接,这个链接已经是处理好的相对路径,无需额外修改。[field:typename/]:调用当前栏目的名称。
获取单篇文章(内容页)的链接
这个场景通常用在首页的文章列表、推荐位、幻灯片等位置。
场景:
首页有一个“最新文章”列表,每篇文章的标题都需要能点击跳转到对应的文章详情页。
步骤:
-
使用文章列表标签
{dede:arclist}arclist是 DedeCMS 最核心、最强大的标签之一,用于调用文章列表。 -
在标签内使用
arcurl字段arclist标签会为每篇文章生成一个包含其信息的对象,arcurl字段就存储了该文章的链接。 -
编写代码
在首页模板中,你可以这样写:
<ul> {dede:arclist titlelen='30' row='5'} <li> <a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a> <span>[field:pubdate function="MyDate('Y-m-d',@me)"/]</span> </li> {/dede:arclist} </ul>代码解释:
{dede:arclist titlelen='30' row='5'}:调用5篇文章,标题长度限制在30个字符。[field:arcurl/]:这是获取文章链接的关键,它会自动生成当前文章的链接,格式通常是/archives/123.html。[field:title/]:获取文章标题。[field:pubdate ...]:获取文章发布日期,并用MyDate函数格式化为年-月-日的格式。
总结与最佳实践
| 需求场景 | 推荐标签/函数 | 关键字段 | 代码示例 |
|---|---|---|---|
| 获取栏目链接 | GetType 函数 |
typelink |
<a href="[field:typelink function='str_replace("{cmspath}","",@me)'/]">栏目名</a> |
| 获取文章链接 | arclist
|
重要提示:
- 模板缓存:修改首页模板后,务必去后台「生成」->「更新主页HTML」,才能看到效果,因为 DedeCMS 默认开启了模板缓存,直接刷新页面是看不到改动的。
- 路径问题:如果你的网站配置了“支持多站点”,或者使用了复杂的URL重写规则,链接的生成可能会有所不同,但在绝大多数标准安装中,上述方法都是最稳定和可靠的。
- 安全考虑:从 DedeCMS 5.7 版本开始,官方推荐使用
dede标签(如{dede:channel})而不是旧的loop标签,因为前者更安全、效率更高。
希望这个详细的教程能帮助你解决在 DedeCMS 中获取链接的问题!
