核心标签
在DedeCMS中,调用文章标签的核心有两个主要标签:

{dede:tag}: 这是一个列表式的标签,用于在循环中(如文章列表、文章内容页)获取单个文章的多个标签,这是最常用、最灵活的标签。{dede:mytag}: 这是一个调用指定标签的标签,通常用于在网站侧边栏等位置调用热门标签、随机标签等。
在文章列表页(如 index.html, list_article.html)调用每篇文章的标签
这是最常见的需求,比如在文章标题下方显示该文章的所有标签。
使用 {dede:tag}
将以下代码放置在你希望显示标签的位置,通常是在 {dede:list} 或 {dede:arclist} 循环标签内部。
{dede:list pagesize='10'}
<h3><a href="[field:arcurl/]">[field:title/]</a></h3>
<p>[field:description/]...</p>
<!-- 在这里调用标签 -->
<div class="tags">
{dede:tag sort='hot' getall='0'}
<a href="[field:tagurl/]">[field:tag/]</a>
{/dede:tag}
</div>
<hr>
{/dede:list}
代码详解:
{dede:tag}: 开始标签循环。sort='hot': 可选属性,用于对标签进行排序。hot: 按标签被使用的次数(热度)排序,从高到低。new: 按标签ID(或添加时间)排序,从高到低。rand: 随机排序。- 如果不写此属性,则按默认顺序。
getall='0': 重要属性,控制获取标签的数量。0: 只获取当前文章的标签。1: 获取全站的标签(不推荐在列表页使用,会造成性能问题)。
[field:tagurl/]: 重要字段,生成该标签的链接地址,点击后可以查看所有带有此标签的文章。[field:tag/]: 显示标签的文本名称。
示例输出效果:

<h3><a href="/article/1.html">DedeCMS标签调用方法详解</a></h3>
<p>这是一篇关于DedeCMS标签用法的文章...</p>
<div class="tags">
<a href="/tags.php?/DedeCMS/">DedeCMS</a>
<a href="/tags.php?/标签/">标签</a>
<a href="/tags.php?/调用/">调用</a>
</div>
<hr>
页(article_article.html)调用当前文章的标签
在文章详情页,我们同样希望显示该文章相关的标签,方便用户点击浏览。
使用 {dede:tag}
模板(article_article.html)中,找到合适的位置(如文章内容下方、作者信息旁边)插入以下代码:
<h1>[field:title/]</h1>
<div class="info">
作者:[field:writer/] 发布时间:[field:pubdate function="MyDate('Y-m-d H:i',@me)"/]
</div>
<div class="content">
[field:body/]
</div>
<!-- 在这里调用标签 -->
<div class="tags">
<strong>相关标签:</strong>
{dede:tag sort='hot' getall='0'}
<a href="[field:tagurl/]">[field:tag/]</a>
{/dede:tag}
</div>
代码与列表页完全相同,因为 {dede:tag} 在循环内部或单页文章内部都能正确识别当前文章的ID。
在网站侧边栏等位置调用全站的“热门标签”或“随机标签”
这种调用不针对某篇文章,而是从全站所有标签中筛选出最热门或最随机的几个。
使用 {dede:mytag}
这个标签需要你在后台的“标签管理”中先设置好一个“标签云”,然后在模板中调用它。
直接调用后台已创建的“标签云”
- 登录DedeCMS后台,进入「标签管理」->「标签云」。
- 点击「增加标签云」,填写名称(如“热门标签云”),选择排序方式(如“按使用次数”),选择调用数量(如20个),然后保存。
- 假设你创建的标签云ID为
1。
在侧边栏模板(如 templets/default/index.htm)中,使用以下代码调用:
<div class="sidebar-box">
<h3>热门标签</h3>
{dede:mytag typeid='1' /}
</div>
typeid='1': 这里填写的是你在后台创建的“标签云”的ID。
使用更灵活的 arclist 标签(推荐)
{dede:mytag} 有时不够灵活,推荐使用 arclist 标签的 tag 属性来实现,效果更好。
<div class="sidebar-box">
<h3>热门标签</h3>
<div class="tagcloud">
{dede:arclist row='20' titlelen='20' orderby='click'}
<a href="[field:arcurl/]">[field:title/]</a>
{/dede:arclist}
</div>
</div>
错误! 上面这个例子是调用热门文章,不是热门标签,请看下面的正确方法。
正确调用热门标签的方法:
直接使用 {dede:tag} 并设置 getall='1' 来获取全站标签,然后通过 row 属性限制数量。
<div class="sidebar-box">
<h3>热门标签</h3>
<div class="tagcloud">
{dede:tag sort='hot' getall='1' row='20'}
<a href="[field:tagurl/]" title="[field:tag/]">[field:tag/]</a>
{/dede:tag}
</div>
</div>
代码详解:
getall='1': 关键!设置为1表示从全站所有标签中获取。sort='hot': 按标签使用次数(热度)排序,从高到低。row='20': 只获取前20个最热门的标签。
调用随机标签:
只需将 sort 属性改为 rand 即可。
<div class="sidebar-box">
<h3>随机标签</h3>
<div class="tagcloud">
{dede:tag sort='rand' getall='1' row='20'}
<a href="[field:tagurl/]" title="[field:tag/]">[field:tag/]</a>
{/dede:tag}
</div>
</div>
常见问题与注意事项
-
标签链接打不开,显示404
- 原因:网站的伪静态规则没有开启或配置不正确。
- 解决:确保在后台“系统”->“系统基本参数”->“核心设置”中,开启了“使用伪静态”,并且你的服务器(如Apache或Nginx)已经加载了DedeCMS的伪静态规则文件(
.htaccess或nginx.conf)。
-
为什么文章没有标签显示?
- 原因:发布文章时,没有在“标签”输入框中填写标签。
- 解决:编辑文章,在标签框里输入标签,用英文逗号 隔开多个标签,然后更新文章。
-
getall='1'为什么在列表页要慎用?- 原因:
getall='1'会让每次循环都去查询全站的标签数据,如果文章列表有10篇,就会执行10次全站标签查询,对数据库造成巨大压力,导致网站加载缓慢。
- 原因:
-
如何给标签添加样式(如不同颜色)? 你可以结合CSS来实现,给标签的
a标签添加一个类名,然后通过CSS随机或按顺序设置颜色。HTML部分:
{dede:tag sort='rand' getall='1' row='20'} <a href="[field:tagurl/]" class="tag-item">[field:tag/]</a> {/dede:tag}CSS部分 (在
/templets/default/style/dedecms.css中添加):.tag-item { display: inline-block; margin: 2px; padding: 2px 8px; background-color: #f0f0f0; border-radius: 12px; /* 可以通过JS动态添加颜色,或者使用nth-child选择器 */ } .tag-item:nth-child(3n+1) { background-color: #ffdddd; } .tag-item:nth-child(3n+2) { background-color: #ddffdd; } .tag-item:nth-child(3n) { background-color: #ddddff; }
| 调用场景 | 推荐标签 | 关键属性 | 说明 |
|---|---|---|---|
| 文章列表页 | {dede:tag} |
getall='0' |
循环调用当前文章的标签。 |
| 页 | {dede:tag} |
getall='0' |
调用当前文章的标签。 |
| 侧边栏-热门标签 | {dede:tag} |
getall='1', sort='hot', row='20' |
从全站调用最热门的N个标签。 |
| 侧边栏-随机标签 | {dede:tag} |
getall='1', sort='rand', row='20' |
从全站调用随机的N个标签。 |
希望这份详细的指南能帮助你完美地在DedeCMS中调用文章标签!
