核心标签
无论在哪种场景下,调用 tag 标签的核心都是使用 DedeCMS 的内置标签:{dede:tag}。

(图片来源网络,侵删)
基本语法
{dede:tag sort='' getall='' row=''}
<a href='[field:tagurl/]'>[field:tag/]</a>
{/dede:tag}
核心属性说明
row:调用的 tag 数量,即显示多少个标签。row='10'表示调用 10 个标签。sort:调用的排序方式。sort='hot'或sort='weekhot':按热度排序(最常用)。sort='new':按最新添加的标签排序。sort='rand':随机排序。
getall:是否获取全站所有标签。getall='0':默认值,只获取当前文章或栏目的标签。getall='1':获取全站所有的标签,通常用于网站侧边栏的“热门标签”云。
typeid:指定栏目 ID,当getall='0'时,可以指定只获取某个栏目下的标签。
页 (article_article.htm) 调用当前文章的标签
这是最常见的用法,通常放在文章内容的末尾,用于展示与本文相关的标签。
适用模板:/templets/default/article_article.htm
代码示例:
<div class="article-tag">
<span>标签:</span>
{dede:tag row='8' sort='hot'}
<a href="[field:tagurl/]" title="[field:tag/]">[field:tag/]</a>
{/dede:tag}
</div>
代码解释:

(图片来源网络,侵删)
row='8':显示当前文章的 8 个标签。sort='hot':按标签的热度进行排序,让热门标签显示在前面。[field:tagurl/]:这是标签的链接地址,会自动生成类似tags.php?/tag名称/的链接。[field:tag/]:这是标签的名称。
效果:在文章页面显示该文章的所有或部分标签,并生成链接。
在列表页 (list_article.htm) 调用当前栏目下所有文章的标签
这种用法通常用于列表页的侧边栏,展示当前栏目的“热门标签”或“所有标签”,方便用户快速浏览同类文章。
适用模板:/templets/default/list_article.htm
代码示例:
<div class="sidebar-tags">
<h3>本栏目热门标签</h3>
{dede:tag row='15' sort='hot' getall='0' typeid=''}
<a href="[field:tagurl/]" title="[field:tag/]">[field:tag/]</a>
{/dede:tag}
</div>
代码解释:
row='15':显示 15 个标签。sort='hot':按热度排序。getall='0':这是关键,表示不获取全站标签,而是只获取与当前栏目相关的标签。typeid='':可以留空,因为列表页默认就知道当前是哪个栏目,你也可以手动指定一个栏目 ID。
效果:在列表页侧边栏显示当前栏目的热门标签云。
在首页 (index.htm) 或其他全局页面调用全站热门标签
这种用法通常用于网站的全局侧边栏,展示整个网站的热门标签,增加站内链接。
适用模板:/templets/default/index.htm 或其他全局模板
代码示例:
<div class="global-tags">
<h3>全站热门标签</h3>
{dede:tag row='30' sort='hot' getall='1'}
<a href="[field:tagurl/]" title="[field:tag/]">[field:tag/]</a>
{/dede:tag}
</div>
代码解释:
row='30':显示全站最热门的 30 个标签。sort='hot':按热度排序。getall='1':这是关键,表示获取全站所有的标签,并按指定规则排序。
效果:在首页或其他页面显示全站的热门标签云。
高级用法与技巧
为标签添加样式(标签云效果)
为了让标签看起来更美观,可以根据标签的使用频率(如热度)来设置不同的字体大小或颜色。
示例代码:
{dede:tag row='30' sort='hot' getall='1'}
<a href="[field:tagurl/]" title="[field:tag/]" style="font-size:[field:total/];">[field:tag/]</a>
{/dede:tag}
解释:
[field:total/]:这个字段代表该标签被使用的总次数(即文章数)。- 你需要在 CSS 中定义好不同
font-size的样式,可以设置一个最大和最小值,然后通过一些计算来动态设置,一个更简单的方法是使用 CSS 的class。
更推荐的方法(使用 class):
在 CSS 文件中定义一些样式类:
.tag-level-1 { font-size: 12px; color: #999; }
.tag-level-2 { font-size: 14px; color: #666; }
.tag-level-3 { font-size: 16px; color: #333; }
.tag-level-4 { font-size: 18px; color: #000; font-weight: bold; }
然后在模板中通过判断 total 的值来赋予不同的 class:
{dede:tag row='30' sort='hot' getall='1'}
<?php
// 这里用PHP进行简单的判断,将total值映射到不同的class
$total = intval(@me);
$class = 'tag-level-1';
if($total > 20) $class = 'tag-level-4';
else if($total > 10) $class = 'tag-level-3';
else if($total > 5) $class = 'tag-level-2';
?>
<a href="[field:tagurl/]" title="[field:tag/]" class="<?php echo $class; ?>">[field:tag/]</a>
{/dede:tag}
注意:在 {dede:tag} 标签内使用 PHP 代码,需要确保你的 DedeCMS 配置支持,并且使用 @me 来获取当前字段的值。
调用当前文章的标签并手动用逗号分隔
有时候你不需要标签的链接,只需要一串用逗号隔开的标签文本,用于 keywords 或其他地方。
代码示例:
{dede:tag row='20' sort=''}
[field:tag/]
{dede:if ([field:global.autoindex/]/20 != 1)}, {/dede:if}
{/dede:tag}
解释:
row='20':获取 20 个标签。sort='':不进行排序,按默认顺序。{dede:if ([field:global.autoindex/]/20 != 1)}, {/dede:if}:这是一个判断,除了最后一个标签,其他标签后面都加上一个逗号和空格。[field:global.autoindex/]是循环的次数。
常见问题排查
-
标签调不出来,显示空白?
- 原因1:文章没有添加标签,请确保在后台发布文章时,填写了“TAG标签”字段。
- 原因2:标签的存放目录 (
/data/tplcache/) 权限不足,请确保这个目录有写入权限。 - 原因3:模板标签写错,检查
{dede:tag}是否拼写正确,以及{/dede:tag}是否有闭合。
-
调出来的标签不是我想要的(比如调出来全站的)?
- 原因:
getall属性设置错误,在列表页或文章页调用相关标签时,请确保getall='0',在首页调用全站标签时,使用getall='1'。
- 原因:
-
标签链接打不开,404错误?
- 原因:网站没有开启伪静态,或者伪静态规则没有正确配置。
- 解决方法:
- 进入 DedeCMS 后台 -> 系统 -> 系统基本参数 -> 核心设置。
- 找到 “是否使用伪静态” 选项,选择 “是”。
- 然后根据你的服务器环境(Apache, Nginx, IIS),上传并配置对应的伪静态规则文件到网站根目录。
希望这份详细的指南能帮助你完美地在 DedeCMS 中调用文章标签!
