织梦CMS提供了多种方式来实现热门搜索的调用,下面我将为你详细介绍最常用和最推荐的几种方法,从简单到高级,并附上代码示例。

(图片来源网络,侵删)
使用系统自带的标签(最简单、最推荐)
织梦CMS内置了{dede:hotwords}标签,这是最简单、最直接的方法,无需任何代码修改即可实现。
标签基本用法
在需要显示热门搜索的HTML模板文件中(通常是 head.htm 或 footer.htm),直接使用以下标签:
<div class="hot-search">
<span>热门搜索:</span>
{dede:hotwords num='10' sublen='8'}
<a href="[field:link/]">[field:name/]</a>
{/dede:hotwords}
</div>
标签参数详解
num='10':表示调用热门搜索关键词的数量,这里调用10个,你可以根据需要修改这个数字。sublen='8':表示每个关键词显示的最大长度,如果关键词过长,会自动截断,一个关键词是“织梦cms建站教程”,设置sublen='8'后,会显示为“织梦cms建...”。maxlength='20':与sublen类似,但更侧重于数据库查询时的截取,通常sublen就足够了。sort='hot':排序方式。hot表示按搜索次数(热门度)排序,这是默认值,你也可以使用week(本周热门)或month(本月热门),但这需要在后台开启相应的统计功能。
标签输出字段
[field:link/]:关键词的搜索链接,点击后会跳转到网站的搜索结果页,并带上该关键词作为参数。/plus/search.php?keyword=织梦cms。[field:name/]:关键词的文本内容。[field:count/]:该关键词被搜索的次数。
样式美化
上面的HTML代码会生成类似这样的结构:
<a href="/plus/search.php?keyword=织梦">织梦</a><a href="/plus/search.php?keyword=cms">cms</a>...
你可以通过CSS来美化它,使其看起来更美观,在CSS文件中添加:

(图片来源网络,侵删)
.hot-search a {
color: #666;
text-decoration: none;
margin-right: 10px;
padding: 2px 5px;
border: 1px solid #eee;
border-radius: 3px;
}
.hot-search a:hover {
color: #ff6600;
border-color: #ff6600;
background-color: #fff5f0;
}
使用SQL查询标签(更灵活)
如果默认的{dede:hotwords}标签无法满足你的需求(比如需要更复杂的排序、筛选或与其他数据关联),你可以使用{dede:sql}标签直接从数据库中查询。
基本SQL查询
热门搜索的数据通常存储在dede_search_keywords这张表中,我们可以通过SQL查询来获取按搜索次数排序的关键词列表。
<div class="hot-search">
<span>热门搜索:</span>
{dede:sql sql="SELECT keyword, count FROM dede_search_keywords ORDER BY count DESC LIMIT 10"}
<a href="/plus/search.php?keyword=[field:keyword/]">[field:keyword/]</a>
{/dede:sql}
</div>
代码解释:
sql="SELECT keyword, count FROM dede_search_keywords ORDER BY count DESC LIMIT 10":SELECT keyword, count:查询关键词和搜索次数两个字段。FROM dede_search_keywords:从dede_search_keywords表中查询(注意:如果你的表前缀不是dede_,请修改为你的表前缀)。ORDER BY count DESC:按count(搜索次数)字段降序排列,这样最热门的词就会排在前面。LIMIT 10:限制只返回10条结果。
[field:keyword/]:通过{dede:sql}标签,查询结果中的字段名可以直接用[field:字段名/]来调用。
通过修改PHP文件实现(功能增强)
如果你想让热门搜索的数据更可控,或者希望它不依赖于用户的实时搜索记录(比如由管理员手动指定),你可以通过修改PHP文件来实现。

(图片来源网络,侵删)
创建自定义函数文件
- 打开织梦的
include目录,找到extend.func.php文件,如果这个文件不存在,就新建一个。 - 在这个文件中添加一个自定义的函数,
/**
* 获取热门搜索关键词
* @param int $num 获取数量
* @return string 返回HTML链接字符串
*/
function GetHotSearch($num = 10) {
global $dsql;
$keywords = array();
$html = '';
// 方法A: 从数据库获取(与SQL查询标签方法相同)
$result = $dsql->GetOne("SELECT keyword FROM dede_search_keywords ORDER BY count DESC LIMIT 0, $num");
while ($row = $dsql->GetArray($result)) {
$keywords[] = "<a href='/plus/search.php?keyword=".urlencode($row['keyword'])."'>".$row['keyword']."</a>";
}
$html = implode(' ', $keywords);
// 方法B: 手动指定关键词(更灵活)
/*
$hot_keywords = array('织梦CMS', '网站建设', 'PHP教程', '网页模板');
foreach ($hot_keywords as $k) {
$keywords[] = "<a href='/plus/search.php?keyword=".urlencode($k)."'>".$k."</a>";
}
$html = implode(' ', $keywords);
*/
return $html;
}
在模板中调用函数
在模板文件中,使用织梦的{dede:global}标签来调用这个自定义函数:
<div class="hot-search">
<span>热门搜索:</span>
{dede:global name='GetHotSearch' function='GetHotSearch(@me)'/}
</div>
或者,如果你想直接调用不传参数:
<div class="hot-search">
<span>热门搜索:</span>
{dede:global name='GetHotSearch'/}
</div>
这种方法的优势:
- 逻辑分离:将PHP逻辑放在函数文件中,模板文件更简洁。
- 高度灵活:你可以轻松地在函数内部实现任何你想要的功能,比如从缓存读取、从后台配置读取等。
总结与建议
| 方法 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| 系统标签 | 最简单,无需代码修改,官方支持 | 功能相对固定,自定义性差 | 绝大多数情况下的首选,快速实现基本功能。 |
| SQL查询标签 | 灵活性高,可以写任意复杂的SQL | 需要了解SQL和数据库表结构 | 需要特殊排序、筛选或与系统其他表关联时。 |
| PHP函数 | 最灵活,功能最强大,逻辑与视图分离 | 需要修改PHP文件,有一定门槛 | 需要高度定制化,或希望不依赖用户搜索记录时。 |
对于绝大多数用户来说,强烈推荐使用方法一(系统自带的{dede:hotwords},因为它简单、高效且足够稳定,只有在它无法满足你的特定需求时,再考虑使用方法二或方法三。
