使用织梦内置的 hotsearch 标签(最简单、最推荐)
这是织梦官方提供的最简单直接的调用方法,专门用于显示热门搜索关键词,它会自动从 dede_search_keywords 数据表中读取数据。

(图片来源网络,侵删)
标签语法
{dede:hotsearch num='10' subday='30'}
<a href='/plus/search.php?keyword=[field:keyword]'>[field:keyword]</a>
{/dede:hotsearch}
参数说明
num='10':显示的关键词数量,10表示显示10个热门词。subday='30':统计的时间范围,单位是天。30表示统计最近30天内的搜索次数,如果需要显示所有时间的热词,可以设置一个很大的数字,如subday='36500',或者直接删除这个参数(默认为30天)。[field:keyword]:这是关键词的字段名,用于获取每个关键词的文本内容。
示例代码
在网站的页脚(footer)或者搜索框旁边,可以这样使用:
<div class="hot-search">
<span>热门搜索:</span>
{dede:hotsearch num='8' subday='30'}
<a href="/plus/search.php?keyword=[field:keyword]" title="[field:keyword]">[field:keyword]</a>
{dede:hotsearch}
</div>
优点:
- 无需修改任何PHP文件,纯模板标签实现。
- 效率高,由系统底层直接处理。
缺点:
- 功能相对固定,无法进行复杂的自定义排序(除了按搜索次数,还想按关键词长度排序)。
使用自定义SQL查询(最灵活)
如果内置的 hotsearch 标签无法满足您的需求(需要自定义排序字段、添加条件等),您可以直接在模板中使用 dede:sql 标签执行自定义的SQL语句。

(图片来源网络,侵删)
确认数据表
织梦的搜索关键词存储在 dede_search_keywords 表中,主要字段有:
keyword:关键词文本。count:搜索次数。resultnum:搜索结果数。lasttime:最后一次搜索时间(Unix时间戳)。
编写SQL语句
假设我们要调用搜索次数最多的10个关键词,SQL语句如下:
SELECT keyword, count FROM dede_search_keywords ORDER BY count DESC LIMIT 10
在模板中使用 dede:sql
{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}
高级示例:调用“最近7天内被搜索超过5次”的热词
{dede:sql sql='SELECT keyword, count FROM dede_search_keywords WHERE lasttime > UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 7 DAY)) AND count > 5 ORDER BY count DESC LIMIT 8'}
<a href='/plus/search.php?keyword=[field:keyword]' title="[field:keyword] (搜索[field:count]次)">[field:keyword]</a>
{/dede:sql}
SQL语句解释:
WHERE lastime > UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 7 DAY)):筛选出 lasttime 字段在过去7天内的记录。
AND count > 5:并且搜索次数大于5。
ORDER BY count DESC:按搜索次数降序排列。
LIMIT 8:只取前8条结果。
优点:
- 极度灵活,可以实现任何复杂的查询逻辑。
- 可以获取到
count、resultnum 等更多字段,用于显示更丰富的信息。
缺点:
- 需要用户具备一定的SQL知识。
- 如果SQL语句写得有误,可能会导致页面报错。
- 每次页面加载都会执行一次查询,如果查询复杂且数据量大,可能会对服务器造成轻微性能影响(但对于这种小查询,影响可以忽略不计)。
手动添加关键词(用于固定展示)
如果您想在页面上展示一些固定的、预设的热门关键词(品牌名、核心产品等),而不是动态获取的,可以直接在模板中写死。
示例代码
<div class="fixed-keywords">
<span>推荐搜索:</span>
<a href="/plus/search.php?keyword=织梦模板">织梦模板</a>
<a href="/plus/search.php?keyword=响应式网站">响应式网站</a>
<a href="/plus/search.php?keyword=网站建设">网站建设</a>
<a href="/plus/search.php?keyword=PHP开发">PHP开发</a>
</div>
优点:
- 完全可控,展示的内容由自己决定。
- 性能最好,无任何数据库查询。
缺点:
- 不动态,需要手动维护关键词列表。
- 无法反映用户的真实搜索行为。
总结与建议
方法
优点
缺点
适用场景
{dede:hotsearch}
简单、高效、官方支持
功能固定,自定义性差
绝大多数情况下的首选,用于显示通用热门搜索。
{dede:sql}
功能强大、极其灵活
需要SQL知识,有轻微性能开销
需要复杂查询逻辑,如按时间、次数等多条件筛选排序。
手动添加
完全可控、性能最优
不动态,需手动维护
展示固定的、预设的品牌词或核心业务词。
给您的建议:
- 优先使用方法一 (
{dede:hotsearch}),它最简单也最稳定。
- 如果方法一无法满足您的特殊需求(您想展示“最近一周的热词”),再考虑使用方法二 (
{dede:sql})。
- 如果您想在特定位置展示一些与业务强相关的固定词,可以使用方法三作为补充。
希望这些信息能帮助您在织梦网站中成功调用搜索关键词!
{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}
高级示例:调用“最近7天内被搜索超过5次”的热词
{dede:sql sql='SELECT keyword, count FROM dede_search_keywords WHERE lasttime > UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 7 DAY)) AND count > 5 ORDER BY count DESC LIMIT 8'}
<a href='/plus/search.php?keyword=[field:keyword]' title="[field:keyword] (搜索[field:count]次)">[field:keyword]</a>
{/dede:sql}
SQL语句解释:
WHERE lastime > UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 7 DAY)):筛选出lasttime字段在过去7天内的记录。AND count > 5:并且搜索次数大于5。ORDER BY count DESC:按搜索次数降序排列。LIMIT 8:只取前8条结果。
优点:
- 极度灵活,可以实现任何复杂的查询逻辑。
- 可以获取到
count、resultnum等更多字段,用于显示更丰富的信息。
缺点:
- 需要用户具备一定的SQL知识。
- 如果SQL语句写得有误,可能会导致页面报错。
- 每次页面加载都会执行一次查询,如果查询复杂且数据量大,可能会对服务器造成轻微性能影响(但对于这种小查询,影响可以忽略不计)。
手动添加关键词(用于固定展示)
如果您想在页面上展示一些固定的、预设的热门关键词(品牌名、核心产品等),而不是动态获取的,可以直接在模板中写死。
示例代码
<div class="fixed-keywords">
<span>推荐搜索:</span>
<a href="/plus/search.php?keyword=织梦模板">织梦模板</a>
<a href="/plus/search.php?keyword=响应式网站">响应式网站</a>
<a href="/plus/search.php?keyword=网站建设">网站建设</a>
<a href="/plus/search.php?keyword=PHP开发">PHP开发</a>
</div>
优点:
- 完全可控,展示的内容由自己决定。
- 性能最好,无任何数据库查询。
缺点:
- 不动态,需要手动维护关键词列表。
- 无法反映用户的真实搜索行为。
总结与建议
| 方法 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
{dede:hotsearch} |
简单、高效、官方支持 | 功能固定,自定义性差 | 绝大多数情况下的首选,用于显示通用热门搜索。 |
{dede:sql} |
功能强大、极其灵活 | 需要SQL知识,有轻微性能开销 | 需要复杂查询逻辑,如按时间、次数等多条件筛选排序。 |
| 手动添加 | 完全可控、性能最优 | 不动态,需手动维护 | 展示固定的、预设的品牌词或核心业务词。 |
给您的建议:
- 优先使用方法一 (
{dede:hotsearch}),它最简单也最稳定。 - 如果方法一无法满足您的特殊需求(您想展示“最近一周的热词”),再考虑使用方法二 (
{dede:sql})。 - 如果您想在特定位置展示一些与业务强相关的固定词,可以使用方法三作为补充。
希望这些信息能帮助您在织梦网站中成功调用搜索关键词!
