核心概念
在DedeCMS中,标签的链接是通过PHP函数生成的,最核心的函数是:

GetTagUrl($tag):这是最常用、最标准的函数,用于获取指定标签的URL地址。{dede:tag}:这是标签列表的底层模板,用于循环输出每一个标签。
我们的目标就是在 {dede:tag} 循环中,使用 GetTagUrl 函数为每个标签生成一个 <a> 链接。
修改标签列表页模板文件(最常用、最推荐)
这是最直接、最安全的方法,适用于绝大多数情况。
场景描述
你在文章列表页、文章内容页或其他地方使用了 {dede:tag} 标签来调用文章关联的标签,但你发现这些标签默认没有链接。
操作步骤
-
找到模板文件
- 登录你的DedeCMS后台。
- 进入【模板】->【默认模板管理】。
- 找到你当前正在使用的模板目录,然后找到对应的模板文件。
- 常见位置:
- 如果是在文章列表页(如
list_article.htm)中调用的标签,就修改list_article.htm。 - 如果是在页(如
article_article.htm)中调用的标签,就修改article_article.htm。 - 如果是在自定义页面或其他模板中调用的,就修改那个对应的模板文件。
- 如果是在文章列表页(如
-
定位并修改标签代码
-
在模板文件中,找到你调用标签的代码片段,它通常是这样的:
{dede:tag row='5' getall='1'} <span class='tag'>[field:tag /]</span> {/dede:tag} -
将
[field:tag /]部分修改为带链接的格式,这里提供几种常见的修改方式: -
方式A:标准链接(推荐) 使用
GetTagUrl函数,这是DedeCMS官方推荐的方式,兼容性最好。{dede:tag row='5' getall='1'} <span class='tag'><a href="[field:tagurl/]">[field:tag /]</a></span> {/dede:tag}说明:
[field:tagurl/]是{dede:tag}底层模板自带的字段,它会自动调用GetTagUrl()函数生成链接,比手动写更简洁。 -
方式B:带样式的链接 如果你希望给链接添加CSS样式(如颜色、背景等),可以这样写:
{dede:tag row='5' getall='1'} <a href='[field:tagurl/]' class="tag-link">[field:tag /]</a> {/dede:tag}然后你可以在CSS文件中定义
.tag-link的样式。 -
方式C:在新窗口打开 如果希望点击标签链接时在新窗口打开,可以添加
target="_blank"属性:{dede:tag row='5' getall='1'} <a href="[field:tagurl/]" target="_blank">[field:tag /]</a> {/dede:tag}
-
-
更新缓存
- 修改完模板文件后,回到后台首页。
- 点击顶部菜单的【生成】->【更新HTML】->【更新所有HTML】。
- 或者,至少点击【更新栏目HTML】和【更新文档HTML】,以确保修改生效。
-
刷新页面查看效果
清除浏览器缓存,然后访问你的网站前台页面,查看标签是否已经成功添加了链接。
修改标签列表底层模板文件(全局生效)
如果你希望网站所有地方的标签都自动带上链接,而不用在每个模板文件里都修改一遍,可以修改标签的底层模板。
操作步骤
-
找到底层模板文件
- 进入DedeCMS后台的【模板】->【标签调用】。
- 在页面右侧找到并点击“底层模板目录”链接,进入底层模板文件夹。
- 在该文件夹中,找到名为
taglist_default.htm的文件,这就是标签列表的默认底层模板。
-
修改底层模板
- 用记事本或Dreamweaver等工具打开
taglist_default.htm文件。 - 你会看到类似这样的代码:
<li><a href='[field:link/]'>[field:tag /]</a></li>
- 确保
[field:link/]这个字段存在,在DedeCMS的底层模板中,[field:link/]通常就是GetTagUrl()函数的输出,如果你的代码里是[field:tag /],你需要手动把它改成<a>链接格式,如方法一所示。 - 保存文件。
- 用记事本或Dreamweaver等工具打开
-
更新缓存
同样,进入【生成】->【更新HTML】,执行更新操作。
优点:一劳永逸,所有调用 {dede:tag} 的地方都会生效。
缺点:不够灵活,如果你想在某个特殊地方去掉链接或修改样式,就无法通过修改模板实现了。
通过修改PHP源码(不推荐,仅适用于高级用户)
在某些情况下,你可能发现标签根本没有被 {dede:tag} 调用出来,或者调用出来是空的,这可能是因为标签没有与文章正确关联,这时你可能需要检查或修改PHP文件。
场景页 {dede:field.tags/} 调用不出来标签,或者后台的“相关标签”功能异常。
操作步骤(以修复文章标签调用为例)
-
找到并打开PHP文件
- 使用FTP或文件管理器,进入你的网站根目录。
- 找到并打开
/include/helpers/archive.helper.php文件。
-
定位并修改函数
- 在文件中搜索
function GetTags()函数。 - 找到类似下面的代码段:
// ... 其他代码 ... $tags = ''; $query = "SELECT tag FROM `dede_taglist` WHERE aid='$aid' "; $dsql->Execute('tag',$query); while($row = $dsql->GetArray('tag')) { $tags .= ($tags=='' ? "<a href='/tags.php?/{$row['tag']}'>".$row['tag']."</a>" : ','."<a href='/tags.php?/{$row['tag']}'>".$row['tag']."</a>"); } // ... 其他代码 ... return $tags; - 关键点:确保
$tags .= ...这一行代码中,$row['tag']被包裹在了<a href='...'>...</a>标签内。 - 注意URL格式:上面的例子中URL是
/tags.php?/{tag},如果你的系统开启了伪静态,URL格式可能是/tags/{tag}/,你需要根据你的网站实际情况调整链接地址。 - 保存文件。
- 在文件中搜索
-
更新缓存
后台【生成】->【更新HTML】。
警告:直接修改PHP文件有风险,操作前请务必备份原文件,此方法仅当你确定问题出在PHP逻辑层面时才使用。
总结与排查
如果按照方法一和方法二操作后,标签仍然没有链接,请检查以下几点:
- 标签是否已生成?:进入后台【标签管理】,看看你文章关联的标签是否存在,如果不存在,需要先生成标签。
- 标签是否与文章关联?:编辑文章,在“标签”输入框里输入标签,并用英文逗号隔开,然后更新,这是最基本的前提。
- URL是否正确?:点击生成的链接,看看是否能正常跳转到标签聚合页面,如果404,可能是伪静态规则问题或未生成标签页面。
- 缓存问题:确保后台缓存已更新,浏览器缓存已清除。
对于绝大多数用户来说,方法一 就足以解决问题,也是最安全、最灵活的选择。
