使用DedeCMS自带的标签 {dede:hotwords}
这是最直接、最简单的方法,但它的功能相对有限,主要缺点是无法直接限制调用数量,并且默认调用的是“搜索热词”,而不是文章标签。

(图片来源网络,侵删)
标签代码:
{dede:hotwords num='10' subday='30' maxlength='20'}
<a href='[field:link/]'>[field:word/]</a>
{/dede:hotwords}
参数说明:
num='10':显示的热词数量。(注意:在某些老版本中,此参数可能无效,它会显示后台设置的全部数量)。subday='30':统计最近多少天内的热词。30表示统计最近30天的搜索热词。maxlength='20':热词显示的最大长度,超过这个长度的会被截断。
如何设置后台热词?
- 登录DedeCMS后台。
- 进入【核心】 -> 【热门关键词管理】。
- 在这里你可以添加、编辑和管理热门关键词,系统会根据用户在站内的搜索行为自动更新。
适用场景:

(图片来源网络,侵删)
- 当你想显示的是用户搜索的热门关键词时。
- 当你只需要一个非常简单的调用,不关心数量限制时。
调用文章标签(按使用次数排序)【推荐】
这才是大多数用户想要的“热门标签”,即被文章使用次数最多的标签,这需要通过自定义SQL查询来实现。
操作步骤:
-
在你需要显示热门标签的模板文件(如
index.htm)中,将以下代码粘贴到合适的位置。 -
代码示例(调用20个最热门的标签):
(图片来源网络,侵删){dede:sql sql="SELECT tagname, count(*) as count FROM dede_taglist GROUP BY tagname ORDER BY count DESC LIMIT 0,20"} <a href="/tags.php?/[field:tagname/]/" title="共有[field:count/]篇与[field:tagname/]相关的文章">[field:tagname/]</a> {/dede:sql} -
代码详解:
dede:sql:这是DedeCMS的自定义SQL标签,用于执行数据库查询。sql="...":这里是核心的SQL语句。SELECT tagname, count(*) as count:从dede_taglist表中查询tagname(标签名),并使用count(*)计算每个标签出现的次数,并将其命名为count。FROM dede_taglist:查询的数据表是dede_taglist,这个表记录了所有文章和标签的关联关系。GROUP BY tagname:按标签名进行分组,这是count(*)能够正确统计每个标签使用次数的前提。ORDER BY count DESC:按统计出的count(使用次数)进行降序排序,这样最热门的标签就会排在最前面。LIMIT 0,20:限制查询结果只返回前20条记录。0是起始位置(从0开始),20是返回的数量,如果你想修改数量,只需修改这里的20即可。
[field:tagname/]:循环中输出的标签名。[field:count/]:循环中输出的该标签被使用的次数。/tags.php?/[field:tagname/]/:这是标签页的默认链接格式,如果你的链接格式不同,请相应修改。
调用热门标签并显示使用次数(带样式)
这是方法二的进阶版,它不仅调用标签,还添加了样式和使用次数,使其在页面上更美观、信息更丰富。
代码示例:
<div class="hot-tags">
<h3>热门标签</h3>
<ul>
{dede:sql sql="SELECT tagname, count(*) as count FROM dede_taglist GROUP BY tagname ORDER BY count DESC LIMIT 0,20"}
<li>
<a href="/tags.php?/[field:tagname/]/" title="共有[field:count/]篇与[field:tagname/]相关的文章">
[field:tagname/]
<span class="tag-count">([field:count/])</span>
</a>
</li>
{/dede:sql}
</ul>
</div>
对应的CSS样式(添加到你的CSS文件中):
.hot-tags {
margin: 20px 0;
padding: 15px;
border: 1px solid #e0e0e0;
border-radius: 5px;
background-color: #f9f9f9;
}
.hot-tags h3 {
border-bottom: 2px solid #3498db;
padding-bottom: 10px;
margin-bottom: 15px;
color: #333;
}
.hot-tags ul {
list-style: none;
padding: 0;
margin: 0;
}
.hot-tags li {
display: inline-block;
margin: 5px 8px;
}
.hot-tags a {
color: #555;
text-decoration: none;
font-size: 14px;
transition: color 0.3s;
}
.hot-tags a:hover {
color: #3498db;
text-decoration: underline;
}
/* 使用次数的样式 */
.tag-count {
color: #999;
font-size: 12px;
margin-left: 5px;
font-weight: normal;
}
这个组合会生成一个带有标题、列表、链接和次数的漂亮热门标签模块。
使用自定义函数(更灵活)
如果你的模板中需要在多个地方调用热门标签,或者需要更复杂的逻辑,可以创建一个自定义函数。
操作步骤:
-
创建函数文件:
- 在
include/extend.func.php文件中(如果不存在则创建这个文件)添加以下PHP函数:/** * 获取热门标签 * @param int $num 获取数量 * @return string 标签HTML字符串 */ function getHotTags($num = 20) { global $dsql; $tags = ''; $sql = "SELECT tagname, count(*) as count FROM dede_taglist GROUP BY tagname ORDER BY count DESC LIMIT 0,{$num}"; $dsql->Execute('hot', $sql); while ($row = $dsql->GetArray('hot')) { $tags .= "<a href='/tags.php?/" . $row['tagname'] . "/' title='共有" . $row['count'] . "篇与" . $row['tagname'] . "相关的文章'>" . $row['tagname'] . "</a> "; } return $tags; }
- 在
-
在模板中调用:
- 在你的模板文件中,直接调用这个函数即可:
<div class="hot-tags"> {dede:getHotTags num='20'/} </div>
- 在你的模板文件中,直接调用这个函数即可:
优点:
- 代码复用性强,一次定义,多处使用。
- 模板文件更简洁,逻辑与表现分离。
- 可以轻松修改函数内部逻辑,而不用动模板文件。
总结与建议
| 方法 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
{dede:hotwords} |
内置标签,无需SQL,简单直接 | 调用的是“搜索热词”,非“文章标签”;数量控制可能不灵活 | 调用后台管理的搜索热词 |
{dede:sql} |
最常用;直接调用文章标签,可精确控制数量和排序 | 需要写SQL,对新手略有门槛 | 绝大多数情况下的首选,快速调用热门文章标签 |
{dede:sql}+CSS |
功能强大,美观,信息丰富 | 需要额外编写CSS样式 | 对页面美观和用户体验要求较高的场景 |
| 自定义函数 | 代码复用,模板简洁,灵活度高 | 需要修改PHP文件,对新手有门槛 | 需要在多个页面或多次调用,追求代码规范的项目 |
对于绝大多数DedeCMS用户来说,强烈推荐使用【方法二】或【方法三】,因为它们能准确地调用出“被文章使用次数最多”的热门标签,这正是网站访客最关心的内容。
