搜索

当前位置:首页 > 全栈分享 > phpcms > 正文

phpcms如何实现全站搜索功能

发布时间:2017-10-11 22:50:20作者:魏义齐阅读:()

本文为博主原创文章,未经博主允许不得转载。

最近博客群里有人建议我给博客做一个搜索功能以更方便的查看网站内容,今天终于实现了,说句实话,phpcms全站搜索功能的实现真不是那么容易的!

网上有用的教程都是只提供了搜索框的代码,但是对搜索列表页只字未提。下面我把我实现的方法详细展示给大家:

搜索框代码:
  1. <form name="search_form1" target="_blank" onsubmit="return go(this)">  
  2. <input 
  3.  name="q" id="q" size="30" value="请输入关键字" onMouseOver="this.focus()"  
  4. onBlur="if (value ==''){value='请输入关键字'}" onFocus="this.select()"  
  5. onClick="if(this.value=='请输入关键字')this.value=''">  
  6. <INPUT name="word" type="hidden" value=0>  
  7. <INPUT name="myselectvalue" type="hidden" value=0>  
  8. <INPUT name="tn" type="hidden" value="sayyes">  
  9. <INPUT name="cl" type="hidden" value="3">  
  10. <input type="hidden" name="m" value="search"/>  
  11. <input type="hidden" name="c" value="index"/>  
  12. <input type="hidden" name="a" value="init"/>  
  13. <input type="hidden" name="typeid" value="1"/>  
  14. <input type="hidden" name="siteid" value="1"/>  
  15. <INPUT CHECKED name="myselect" onclick=javascriptthis.form.myselectvalue.value=0type=radio value=0>  
  16. <FONT color=#0000cc style="FONT-SIZE: 12px">百度搜索</FONT>  
  17. <INPUT name="myselect" onclick=javascriptthis.form.myselectvalue.value=1type=radio value=1>  
  18. <FONT color=#ff0000 style="FONT-SIZE: 12px">站内</FONT>  
  19. <input type="submit" value="搜索">  
  20. </form>  
  21. <SCRIPT language=javascript>  
  22. <!--  
  23. function go(formname)  
  24. {  
  25. var url = "https://www.baidu.com/baidu";  
  26. formname.method = "get";  
  27. if (formname.myselectvalue.value == "1") {  
  28. url="{APP_PATH}index.php";  
  29. }  
  30. documentdocument.search_form1.word.value = document.search_form1.q.value;  
  31. formname.action = url;  
  32. return true;  
  33. }  
  34. //-->  
  35. </SCRIPT> 
这段搜索框代码属于二次开发,除了站内搜索还有百度搜索功能,当然你也可以用phpcms自带的搜索框。

phpcms自带的搜索代码在默认模板的搜索模块里的index.html页面里,路径:/phpcms/templates/default/search/,代码如下:
<form name="search" type="get"> 
  <input type="hidden" name="m" value="search"/> 
  <input type="hidden" name="c" value="index"/> 
  <input type="hidden" name="a" value="init"/> 
  <input type="hidden" name="typeid" value="{$typeid}" id="typeid"/> 
  <input type="hidden" name="siteid" value="{$siteid}" id="siteid"/> 
  <div class="sr_frm"> 
    <div class="sr_frm_box"> 
      <div class="sr_frmipt"> 
        <input type="text" name="q" id="q" class="ipt"> 
        <div class="sp" id="aca">▼</div> 
        <input type="submit" class="ss_btn" value="搜 索"> 
      </div> 
    </div> 
    <div id="sr_infos" class="wrap sr_infoul"> </div> 
  </div> 
</form> 
跟二次开发的搜索代码一样放置你网站需要搜索框的地方,搜索关键词会搜到网站所有跟关键词相关的内容。

我用的是上面二次开发的代码,因为它在SEO上更有优势。

但是,不管是上面哪组代码,搜索内容列表展示页都是phpcms默认的,如何把它改成自己想要的样子呢?一开始我想系统自带的搜索模块是放在模板下面的,那我可不可以也弄一个search模块放在我的模板下,于是我把系统自带的搜索模块复制了一份放到自己的模板下,然后修改list的样式并试图把搜索功能引到自己的搜索模块上,但发现根本实现不了。

结论:phpcms的搜索功能并不像模板那样,可以自己去另外做,然后调用代码,只能是在默认的搜索模块里面修改。

修改默认的搜索模板里的文件还是很麻烦的,头部底部都是调用的,css样式也写的很变态(一个背景图片在样式里出现了十几次),强调一下,自己另写css样式控制搜索列表页是起不到作用的,要在它的css文件里面修改。根据header.html里面的样式路径找到控制搜索列表页的css文件,在里面修改即可。

修改别人的样式要有耐心,虽然麻烦但只要修改好了,我们要的效果也就实现了。此外,你还可以锦上添花写一个js效果:列出几个推荐搜索关键词,用户点击关键词直接传到搜索框,这样可以更方便向访问者展示网站的重要内容。

2018年10月23日补充:动态网站纯静态后可能会遇到只有在首页和搜索列表页搜索功能才能正常使用的情况,解决方法戳“phpcms网站静态化后全站搜索功能不能正常使用如何解决”。

本文标签:,您可以阅读与「」相关的所有文章

魏义齐全栈技术交流:魏义齐全栈技术交流

上一篇:phpcms后台登录密码忘记怎么办?下一篇:phpcms列表页和文章页最新文章及点击排行的代码调用

赞助本站

原创不易,您的赞助就是博主更新的动力!

赞助本站可在赞助光荣榜留下外链信息,支付宝扫此二维码可领红包