最简单、最常用的方法(推荐)
这是 DedeCMS 最基础也是最直接的调用方式,适用于绝大多数场景。

(图片来源网络,侵删)
使用标签:
{dede:tag row='10' getall='0'}
<a href="[field:link/]">[field:tag/]</a>
{/dede:tag}
标签属性说明:
row='10':表示调用 tag 的数量,10表示调用 10 个,你可以根据需要修改这个数字,0或不设置表示调用所有。getall='0':表示是否调用全站的热门 tag。0表示只调用当前文章的 tag,1表示调用全站的热门 tag,在文章页,我们通常设置为0。
示例代码:
在你的 article_article.htm 模板文件中,你可以将这段代码放在你希望显示标签的位置,比如文章标题下方、内容上方或文章末尾。

(图片来源网络,侵删)
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">{dede:field.title/} - {dede:global.cfg_webname/}</title>
</head>
<body>
<h1>{dede:field.title/}</h1>
<div class="info">
<span>作者:{dede:field.writer/}</span>
<span>时间:{dede:field.pubdate function="MyDate('Y-m-d H:i',@me)"/}</span>
<span>来源:{dede:field.source/}</span>
<span>点击:{dede:field.click/}</span>
</div>
<!-- 文章内容 -->
<div class="content">
{dede:field.body/}
</div>
<!-- 在这里调用标签 -->
<div class="tags">
<strong>标签:</strong>
{dede:tag row='10' getall='0'}
<a href="[field:link/]">[field:tag/]</a>
{/dede:tag}
</div>
</body>
</html>
效果预览:
如果一篇文章的标签是 "dedecms", "网站建设", "php", "教程",那么前台页面会显示为:
标签:<a href="/tags.php?/dedecms">dedecms</a> <a href="/tags.php?/网站建设">网站建设</a> ...
自定义标签样式(添加CSS类)
如果你想让标签的样式更美观,比如给每个标签加上不同的背景色或边距,可以在 a 标签里添加 class 属性。
示例代码:
<div class="tags">
<strong>标签:</strong>
{dede:tag row='10' getall='0'}
<a href="[field:link/]" class="tag-item">[field:tag/]</a>
{/dede:tag}
</div>
然后在你的CSS文件中定义 .tag-item 的样式:

(图片来源网络,侵删)
.tag-item {
display: inline-block; /* 让a标签可以设置宽高和margin */
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;
}
更灵活的调用(结合PHP)
如果你的需求更复杂,比如想对标签进行二次处理(如截取长度、首字母大写等),可以使用 php 标签结合 GetTags 函数来实现。
使用标签:
<div class="tags">
<strong>标签:</strong>
{dede:php}
$tags = GetTags(@me);
$tags = str_replace(',', ' ', $tags); // 将逗号替换成空格,或者你可以用其他分隔符
echo $tags;
{/dede:php}
</div>
代码解析:
{dede:php}...{/dede:php}:这是一个可以执行任意PHP代码的块。@me:在这个标签块内,@me代表外层字段的值,在这里就是{dede:php}所在位置的原始内容,对于文章页来说,就是当前文章的ID。GetTags():这是 DedeCMS 的一个核心函数,它接收一个文章ID作为参数,返回一个由逗号分隔的标签字符串,"dedecms,网站建设,php,教程"。str_replace(',', ' ', $tags):这是一个PHP函数,我们将逗号替换成一个空格,这样标签之间就不会挤在一起,你也可以替换成其他HTML,<span>·</span>来作为分隔符。
进阶示例(给每个标签加上链接):
如果你想在PHP方法中也为每个标签生成链接,可以这样做:
<div class="tags">
<strong>标签:</strong>
{dede:php}
$tags = GetTags(@me);
$tagArray = explode(',', $tags);
if (is_array($tagArray)) {
foreach ($tagArray as $tag) {
$tag = trim($tag); // 去除可能的空格
if ($tag) {
// 拼接出标签链接的URL
$tagUrl = "/tags.php?/".urlencode($tag);
echo "<a href='{$tagUrl}' class='tag-item'>{$tag}</a> ";
}
}
}
{/dede:php}
</div>
这种方法非常灵活,但代码量也稍多,对于绝大多数用户,方法一已经完全够用了。
总结与注意事项
| 方法 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| 方法一 | 简单、高效、官方推荐 | 自定义样式需额外操作 | 99% 的场景,直接使用即可 |
| 方法二 | 样式灵活,美观 | 依赖于CSS | 需要对标签进行美化时 |
| 方法三 | 极度灵活,可进行任何PHP处理 | 代码复杂,有一定门槛 | 需要对标签进行复杂逻辑处理时 |
重要提示:
- 确保文章有标签:如果某篇文章在后台没有填写标签,那么以上方法都不会显示任何内容。
- URL路径:默认情况下,标签页的路径是
/tags.php,如果你的网站配置了伪静态,标签链接可能会变成/tags/标签名/的形式。[field:link/]标签会自动适应你的网站设置。 - 模板缓存:修改模板文件后,如果前台没有立即生效,请登录DedeCMS后台点击 “生成” -> “更新HTML”,并选择更新相关文章页。
希望这些方法能帮助你完美地在文章页调用出标签!
