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.langfujun.top/learn/php/87.html"
如果您觉得文章对你有帮助,可以进行打赏。
打赏多少,您高兴就行,谢谢您对琅枫博客的支持! ~(@^_^@)~
微信打赏
支付宝打赏