最常用、最推荐的方法(使用系统内置标签)
这是最标准、最简单的方法,直接使用 DedeCMS 提供的内置标签 {dede:tag} 即可。

在模板文件中添加代码
页模板文件,通常位于 /templets/default/article_article.htm,您希望标签显示的位置(比如文章标题下方、正文内容下方等)添加以下代码:
{dede:tag}
<a href='[field:link/]'>[field:tag /]</a>
{/dede:tag}
代码解释
{dede:tag}...{/dede:tag}:这是循环标签,会为当前文章的每一个标签都执行一次内部的代码。[field:link/]:这是标签的链接地址,指向标签列表页。[field:tag /]:这是标签的名称本身。
效果展示
假设一篇文章有 "织梦CMS"、"网页开发"、"PHP" 三个标签,那么使用上面的代码,最终生成的 HTML 会是:
<a href='/tags.php?/zhimengcms/'>织梦CMS</a> <a href='/tags.php?/wangyankaifa/'>网页开发</a> <a href='/tags.php?/php/'>PHP</a>
样式美化(推荐)
为了让标签看起来更美观,通常我们会给它们添加一些样式,比如背景色、内边距、外边距等。
方法 A:直接在标签里加 class

{dede:tag}
<a href='[field:link/]' class="tag-item">[field:tag /]</a>
{/dede:tag}
然后在您的 CSS 文件(如 /templets/default/style/dedecms.css)中定义 .tag-item 的样式:
.tag-item {
display: inline-block; /* 让 a 标签可以设置宽高和内边距 */
padding: 2px 8px;
margin: 0 5px 5px 0;
background-color: #f0f0f0;
color: #333;
border-radius: 3px;
text-decoration: none;
transition: background-color 0.3s;
}
.tag-item:hover {
background-color: #007bff;
color: #fff;
}
方法 B:使用分隔符
如果您希望标签之间用逗号或竖线隔开,而不是每个都独立成 a 标签,可以使用 separator 属性。
{dede:tag sort='hot' getall='0'}
[field:tag/]
{dede:tag}
<a href='[field:link/]'>[field:tag/]</a>
{/dede:tag}
{/dede:tag}
注意:上面的嵌套写法是错误的,
{dede:tag}本身不支持嵌套,正确的做法是使用sort和getall等属性来控制输出,然后用 或 作为分隔符。(图片来源网络,侵删)
正确的分隔符用法:
{dede:tag sort='rand' getall='1'}
<a href='[field:link/]'>[field:tag/]</a> {dede:tag}
{/dede:tag}
这会在每个标签链接后面自动加上一个空格 {dede:tag},如果您需要其他分隔符,可以通过修改 include/helpers/archive.helper.php 文件来实现,但通常直接用 CSS 来控制间距更简单。
使用SQL直接查询(更灵活)
当内置标签无法满足特殊需求时,可以直接使用 DedeCMS 的 GetTags() 函数配合自定义SQL来获取标签。
在模板文件中添加代码
在 article_article.htm 中,在 {dede:field.body/} 之后,</article> 标签之前添加如下代码:
{dede:sql sql='Select * from dede_archives where id=~id~'}
{dede:tag row='50' sort='hot' getall='1'}
<a href='[field:link/]'>[field:tag/]</a>
{/dede:tag}
{/dede:sql}
注意:
~id~是 DedeCMS 模板中的特殊变量,代表当前文章的 ID,这个方法虽然能用,但不如方法一直接和高效,不推荐常规使用。
使用PHP代码调用(功能最强大)
如果您需要对标签进行非常复杂的处理(为不同的标签应用不同的样式或链接到不同的页面),可以直接在模板中嵌入 PHP 代码。
修改模板文件
打开 article_article.htm,在 {dede:field.body/} 之后添加以下代码:
<?php
$tags = GetTags(@me);
$tags = str_replace(',', ' ', $tags); // 将逗号替换为空格,作为分隔符
if($tags){
echo "<div class='article-tags'>标签:".$tags."</div>";
}
?>
代码解释
<?php ... ?>:PHP 代码的起始和结束标记。GetTags(@me):这是 DedeCMS 的核心函数,用于获取当前文章的标签。@me是传递给函数的当前文章内容(在这里其实传的是ID,函数内部会处理)。str_replace(',', ' ', $tags):将获取到的标签字符串(格式如 "tag1,tag2,tag3")中的逗号替换成空格。echo ...:输出处理后的标签。
效果与问题
这种方法获取到的是纯文本标签,不是链接,如果您需要将它们变成链接,需要自己编写更复杂的逻辑来分割标签并拼接URL,比较麻烦,此方法仅适用于某些特殊场景,一般不推荐用来生成标签链接。
总结与对比
| 方法 | 优点 | 缺点 | 推荐度 |
|---|---|---|---|
| 内置标签 | 代码最简单、最标准、最安全,官方推荐,不易出错。 | 灵活性相对较低。 | ★★★★★ (强烈推荐) |
| SQL查询 | 相对灵活。 | 代码稍复杂,性能略差于内置标签,可读性不高。 | ★★☆☆☆ (不推荐) |
| PHP代码 | 功能最强大,可以实现任何自定义逻辑。 | 代码复杂,容易出错,破坏模板的简洁性,对PHP有一定要求。 | ★☆☆☆☆ (仅用于特殊需求) |
最终建议
直接使用方法一,它完美地平衡了简单性、稳定性和功能性,对于绝大多数网站来说,{dede:tag} 标签已经足够强大。
额外提示:如果您的标签没有显示出来,请检查以下几点:
- 发布文章时,是否在“标签”文本框中输入了标签,并用英文逗号隔开(
织梦CMS,网页开发)。 - 您使用的模板文件是否正确修改了。
- 修改模板后,是否清除了网站缓存(在 DedeCMS 后台 > 系统 > 站点清理缓存)。

