帝国 CMS 搜索表单怎么建

liulian
liulian 正式会员超兽战士
发布于 2026-10-07 07:31 ·1 浏览 ·0 回复

学完这篇,你能在帝国CMS 7.5 的站点上从零搭出一个真正能用的站内搜索表单,并且知道每个参数写错之后会出什么毛病。下面按顺序做,十分钟内能跑通。

第一步:先拿到「搜索结果模板 ID」,这是表单的钥匙

搜索框本身只是一段 HTML,点击搜索后由 /e/search/index.php 负责查询,它需要一个参数告诉它「用哪个模板渲染结果页」,这个参数就是 tempid。所以第一步是去后台把这个 ID 找出来。

登录后台,左侧菜单依次点:「模板」→「搜索模板」。列表里会看到「普通搜索表单模板」「高级搜索表单模板」「搜索结果模板」等条目,每行最左边有一列「模板 ID」。记住「搜索结果模板」那一行的数字,比如 1、2 或你自己新建的编号,这就是后面 tempid 的值。

注意:如果你从没动过搜索模板,默认模板可能已经被删或被改乱。此时点该行右侧的「修改」,随便改一个不影响渲染的字符再保存,就能确认它还能正常保存;报错就先点「恢复默认」。

第二步:在首页模板里插入表单代码

打开「模板」→「公共模板」→「首页模板」(或你要放搜索框的那个模板),在合适位置粘贴下面这段:

<form action="/e/search/index.php" method="post" name="searchform" id="searchform">
  <input type="hidden" name="tbname" value="news">
  <input type="hidden" name="show" value="title,smalltext,newstext">
  <input type="hidden" name="tempid" value="1">
  <input type="text" name="keyboard" id="keyboard" size="20" placeholder="输入关键词">
  <input type="submit" name="Submit" value="搜索">
</form>

保存后点「更新缓存」,再到「生成」→「更新首页」重新生成一次首页,搜索框就出现在页面上了。

注意:把 tempid 的 1 换成你上一步记下的真实 ID;如果首页是静态页且站点有多个域名,action 建议写成 [!--news.url--]e/search/index.php,让帝国自动补全站点地址。

第三步:搞懂四个隐藏字段,改错了搜索就是没结果

这一步决定搜索能不能搜到东西,逐个说清楚。

tbname:要搜索的数据表名,填系统模型对应的表。想看表名,去「系统」→「数据表与系统模型」→「管理数据表」,列表里「数据表名」那一列就是,新闻是 news,下载是 download,图库是 photo。搜文章就填 news。

show:参与匹配的字段,多个用英文逗号隔开,不能有空格。title 是标题,smalltext 是简介,newstext 是正文。字段名必须和数据表里完全一致,把 smalltext 写成 smalltexts,搜索结果直接为空。

tempid:第一步拿到的搜索结果模板 ID。

keyboard:用户输入关键词的输入框,name 必须叫 keyboard,改成别的(比如 keyword)后台收不到值,会提示没输入关键字。

注意:show 里加 newstext 会让搜索变慢,因为要全表扫描正文。数据量上万条时建议只留 title,smalltext。

第四步:测试并排查常见问题

保存并生成后,在前台输入一个你确定文章标题里有的词,点搜索。正常结果是跳到 /e/search/index.php 并列出匹配文章。

搜不到时按顺序查三件事:一看 tbname 是不是写成了栏目名;二看 show 字段名有没有拼错;三看目标文章是否已经生成过(未生成的信息在搜索里通常查不到)。

页面空白或报数据库错误,去「系统」→「系统参数设置」→「前台搜索参数设置」,检查搜索开关和间隔时间设置是否被人关掉或设得过大。

注意:搜索表单用 POST,用户刷新结果页时浏览器会弹「是否重新提交表单」。想避免这个提示,可以在搜索表单上改用 method="get",帝国CMS 的 /e/search/index.php 同样能接收 GET 参数。

小结

  • 搜索表单三件套:action="/e/search/index.php"、tempid(搜索结果模板 ID)、keyboard(输入框名)。
  • tbname 填数据表名,show 填字段名,两者都要和后台实际名称逐字对应。
  • 表单改完必须「更新缓存」+ 重新生成前台页面,否则看到的还是旧页面。
  • 搜索无结果先查字段名和表名,再查文章是否已生成。
  • 正文参与搜索(newstext)会拖慢速度,数据量大时只搜标题和简介。
版权声明:本文来自 GJ论坛《帝国 CMS 搜索表单怎么建》
原文链接:https://www.gj0.com/thread-156.html
转载请注明出处并保留本声明;内容仅代表作者观点,与本站立场无关。若本文涉嫌侵权,请联系本站处理。

全部回复 0

还没有回复,来抢沙发~