phpcms简化全站搜索功能
博主发现phpcms自带的搜索功能太繁杂化,而且搜索不精准,老是搜索不出想要的东西。博主就自己动手简化phpcmsv9搜索功能,希望phpcms不要找我麻烦哈哈。
先看效果,以本站为例:
搜索phpcms并设置了伪静态。
方法
找到文件/phpcms/modules/search/index.php
修改成
/** * 关键词搜索 简化搜索功能 琅枫 */ public function init() { //获取siteid $siteid = isset($_REQUEST['siteid']) && trim($_REQUEST['siteid']) ? intval($_REQUEST['siteid']) : 1; if(isset($_GET['q'])) { if(trim($_GET['q'])=='') { header('Location: '.APP_PATH.'index.php');exit; } $typeid = empty($_GET['typeid']) ? 1 : intval($_GET['typeid']); $page = isset($_GET['page']) ? intval($_GET['page']) : 1; $pagesize = 10; $q = safe_replace(trim($_GET['q'])); $q = new_html_special_chars(strip_tags($q)); $q = str_replace('%', '', $q); //SEO $SEO = seo($siteid); $SEO['title'] = $q."_搜索_琅枫个人博客"; $SEO['keyword'] = $q; $SEO['description'] = "琅枫博客分享".$q."知识!"; //URL规则 $urlrule = getcache('urlrules','commons'); $urlrule = str_replace('|', '~',$urlrule['35']); $tmp_urls = explode('~',$urlrule); $tmp_urls = isset($tmp_urls[1]) ? $tmp_urls[1] : $tmp_urls[0]; preg_match_all('/{\$([a-z0-9_]+)}/i',$tmp_urls,$_urls); if(!empty($_urls[1])) { foreach($_urls[1] as $_v) { $GLOBALS['URL_ARRAY'][$_v] = $_GET[$_v]; } } define('URLRULE', $urlrule); $GLOBALS['URL_ARRAY']['categorydir'] = $q; $this->search_db = pc_base::load_model('content_model'); $this->search_db->table_name = $this->db->db_tablepre."news"; $data = $this->search_db->listinfo($where = "title like '%$q%' or description like '%$q%'",$order = 'inputtime desc',$page, $pagesize); foreach($data as $_k=>$_v) { $data[$_k]['title'] = str_replace($q, '<font color=red>'.$q.'</font>', $_v['title']); $data[$_k]['description'] = str_replace($q, '<font color=red>'.$q.'</font>', $_v['description']); } $pages1 = $this->search_db->pages1; $execute_time = execute_time(); $pages1 = isset($pages1) ? $pages1 : ''; $totalnums = isset($totalnums) ? $totalnums : 0; $data = isset($data) ? $data : ''; include template('search','list'); } else { include template('search','list'); } }
注:URL规则在后台先添加伪静态规则
URL示例:search-phpcms-2.html
URL规则:search-{$categorydir}-1.html|search-{$categorydir}-{$page}.html
分页函数本站也修改了$pages1;参考的小伙伴注意一下。
2.搜索html文件为:
<form class="am-topbar-form am-topbar-right am-form-inline" role="search" action="http://phpfeng.cn/index.php" method="get" target="_blank" id="form" data-am-validator> <div class="am-input-group"> <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="1"> <input type="hidden" name="siteid" value="1"> <input type="text" class="am-form-field am-input-sm" name="q" id="q" placeholder="搜索" data-validation-message="至少1个字符" minlength="1" required> <span class="am-input-group-btn"> <button class="am-btn am-btn-default" type="button"><span class="am-icon-search"></span></button> </span> </div> </form>
3.修改.htaccess文件让伪静态生效
.htaccess是LINUX+apache如果是IIS着修改web.config
.htaccess代码:
RewriteRule ^search-(.*)-([0-9]+).html index.php?m=search&c=index&a=init&typeid=1&siteid=1&q=$1&page=$2
如果对phpcms伪静态不熟悉的可参考:phpcms伪静态设置
忘了这里表单这里是用的JS提交的。附上代码:
$(".am-input-group-btn").click(function(){ var q = $("#q").val(); if(q){ window.open("http://phpfeng.cn/search-"+q+"-1.html"); }else{ return false; } });
本文出自:琅枫个人博客。如需转载请注明出处!
本文出处:"https://www.phpfeng.cn/learn/php/87.html"
如果您觉得文章对你有帮助,可以进行打赏。
打赏多少,您高兴就行,谢谢您对琅枫博客的支持! ~(@^_^@)~
微信打赏

支付宝打赏
