- 添加搜索功能:在网站前台提供一个搜索框,让用户可以搜索内容。
- 记录和分析搜索关键词:记录用户搜索了什么词,并可以展示热门搜索词,以了解用户需求,甚至用于SEO优化。
下面我将分步详细讲解如何实现这两个功能。

(图片来源网络,侵删)
添加基础搜索功能
这是最基本的需求,在织梦默认模板中通常已经包含,但我们可以了解一下其原理和如何自定义。
搜索框代码
在您需要显示搜索框的模板文件中(通常是 head.htm 或 index.htm),添加以下HTML代码:
<form name="formsearch" action="{dede:global.cfg_cmspath/}/search.php">
<div class="form-search">
<input type="hidden" name="kwtype" value="0" />
<input type="text" name="q" class="search-keyword" placeholder="请输入搜索关键词" />
<button type="submit" class="search-submit">搜索</button>
</div>
</form>
代码解释:
action="{dede:global.cfg_cmspath/}/search.php":指定表单提交到search.php文件,这是织梦的搜索程序。<input type="hidden" name="kwtype" value="0" />:搜索类型。0表示模糊搜索(推荐),1表示精确搜索。<input type="text" name="q" ... />:这是用户输入关键词的输入框,name="q"是固定的,织梦搜索程序通过这个q参数来获取关键词。<button type="submit" ...>:提交按钮。
搜索结果页模板
织梦默认的搜索结果页模板是 search.htm,位于 /templets/default/ 目录下,您可以根据自己的需求修改这个文件,来定制搜索结果的展示样式。

(图片来源网络,侵删)
添加并显示热门搜索关键词
这是一个更高级的功能,它需要记录用户的搜索行为,并在前台展示,这通常需要修改文件和数据库。
步骤 1:修改搜索程序以记录关键词
我们需要修改 search.php 文件,当用户进行搜索时,将搜索关键词写入数据库。
- 打开文件:用FTP或服务器管理工具打开
/plus/search.php文件。 - 找到关键代码:找到处理搜索逻辑的部分,通常在
//排序方式这行代码之前。 - 添加记录代码:在合适的位置(在
$q = trim($_GET['q']);这行之后)插入以下PHP代码:
// --- 在这里开始添加的代码 ---
// 1. 引入数据库配置文件,确保能连接数据库
// (search.php 已经包含了 dedesql.class.php,所以这一步可以省略,但为了清晰,可以加上)
// require_once(dirname(__FILE__)."/../include/dedesql.class.php");
// 2. 获取搜索关键词,并做简单过滤
$keyword = trim($_GET['q']);
if (!empty($keyword)) {
// 防止SQL注入,对关键词进行转义
$keyword = addslashes($keyword);
// 3. 检查该关键词是否今天已经记录过(避免重复刷新页面导致重复记录)
$today = date('Y-m-d');
$dsql->Execute("SELECT * FROM `dede_search_keywords` WHERE keyword = '$keyword' AND BY='$today'");
if ($dsql->GetTotalRow() == 0) {
// 4. 如果没有记录过,则插入新记录
$query = "INSERT INTO `dede_search_keywords` (keyword, count, resultcount, `by`, addtime) VALUES ('$keyword', 1, 0, '$today', NOW())";
$dsql->ExecuteNoneQuery($query);
} else {
// 5. 如果已经记录过,则增加搜索次数
$query = "UPDATE `dede_search_keywords` SET count = count + 1 WHERE keyword = '$keyword' AND `by` = '$today'";
$dsql->ExecuteNoneQuery($query);
}
}
// --- 在这里结束添加的代码 ---
代码解释:
- 我们首先获取用户搜索的关键词
$_GET['q']。 - 使用
addslashes()对关键词进行转义,防止SQL注入。 - 我们检查
dede_search_keywords表中今天是否已经有这个关键词的记录。 - 如果没有,就插入一条新记录,
count(搜索次数)为1。 - 如果有,就将该记录的
count字段加1。
步骤 2:创建数据表
上面的代码操作一个名为 dede_search_keywords 的表,但这个表在默认的织梦数据库中是不存在的,所以我们需要手动创建它。

(图片来源网络,侵删)
- 登录phpMyAdmin:进入您的数据库管理界面。
- 选择数据库:选择织梦网站对应的数据库。
- 执行SQL:点击“SQL”选项卡,然后复制并执行以下SQL语句:
CREATE TABLE `dede_search_keywords` ( `id` int(11) NOT NULL AUTO_INCREMENT, `keyword` varchar(100) NOT NULL DEFAULT '', `count` int(10) NOT NULL DEFAULT '0', `resultcount` int(10) NOT NULL DEFAULT '0', `by` date NOT NULL DEFAULT '0000-00-00', `addtime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', PRIMARY KEY (`id`), UNIQUE KEY `keyword_by` (`keyword`,`by`), KEY `keyword` (`keyword`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
这个表包含了关键词本身、搜索次数、搜索结果数、记录日期等信息。
步骤 3:在前台显示热门搜索词
我们可以在网站的模板(如 head.htm 或 footer.htm)中调用并显示热门搜索词了。
- 打开模板文件:例如打开
/templets/default/head.htm。 - 添加调用代码:在您想显示热门搜索词的位置,添加以下织梦标签:
<div class="hot-search">
<span>热门搜索:</span>
{dede:hotwords num='10' sublen='6'}
<a href='{dede:global.cfg_cmspath/}/search.php?q=[field:keyword/]'>[field:keyword/]</a>
{/dede:hotwords}
</div>
标签解释:
{dede:hotwords}:这是织梦调用热门搜索词的标签。num='10':表示调用前10个最热门的搜索词。sublen='6':如果关键词过长,只显示前6个字符,后面用“...”代替。[field:keyword/]:代表每个关键词。<a href='...'>:为每个关键词生成一个指向搜索结果页的链接。
重要提示:织梦默认的 hotwords 标签是调用后台“关键词管理”里的内容,而不是我们刚刚创建的 dede_search_keywords 表,上面的标签可能无法直接使用,我们需要修改标签文件。
修改标签文件以支持新表:
- 找到标签文件:打开
/include/taglib/hotwords.lib.php文件。 - 修改SQL查询:找到
$row['keyword'] = cn_substr($row['keyword'], $sublen);这行,将其上方的SQL查询语句修改为:
// 原来的SQL可能是从 `dede_keywords` 表查询,我们改为从 `dede_search_keywords` 查询 // 并且按总搜索次数排序,并限制只取最近30天内的数据,避免数据量过大 $query = "SELECT keyword, SUM(count) as total_count FROM `dede_search_keywords` WHERE `by` >= DATE_SUB(CURDATE(), INTERVAL 30 DAY) GROUP BY keyword ORDER BY total_count DESC LIMIT 0, $row";
{dede:hotwords} 标签就会从我们创建的 dede_search_keywords 表中读取数据,并显示真正的热门搜索词了。
后台管理搜索关键词
- 查看数据:您可以直接在phpMyAdmin中查看
dede_search_keywords表,了解哪些词被搜索得最多。 - 手动添加:您也可以直接在表中手动添加一些热门词,引导用户搜索。
- 清空数据:如果数据量过大,可以定期清空或归档旧数据。
| 功能 | 核心操作 | 涉及文件/表 | 难度 |
|---|---|---|---|
| 基础搜索 | 在模板中添加<form>表单 |
search.php, search.htm, 模板文件 |
★☆☆☆☆ |
| 记录关键词 | 修改search.php,添加记录逻辑 |
plus/search.php, dede_search_keywords (新建表) |
★★★☆☆ |
| 显示热门词 | 使用{dede:hotwords}标签并修改其底层逻辑 |
head.htm等模板文件, include/taglib/hotwords.lib.php |
★★★☆☆ |
通过以上步骤,您就可以在织梦网站中实现一个功能完善的搜索系统,不仅能满足用户的搜索需求,还能通过分析搜索关键词来优化您的内容和SEO策略。
