phpcms v9最新全站搜索教程分享
phpcms v9的搜索是根据模型来搜索的,今天分享一个不用模型搜索,直接全站搜索的代码,废话不多说了。看教程
第一步:需要在phpcms v9后台 模块=》全站搜索=》模块配置里开启全站搜索,如图:
第二步:替换代码(此步骤改变了phpcms v9 全站搜索的其它配置)
找到phpcmsmodulessearchindex.php 里的function init()函数
替换成
/**
* 关键词搜索
*/
public function init() {
//获取siteid
$siteid = isset($_REQUEST['siteid']) && trim($_REQUEST['siteid']) ? intval($_REQUEST['siteid']) : 1;
$SEO = seo($siteid);
//搜索配置
$search_setting = getcache('search');
$setting = $search_setting[$siteid];
$search_model = getcache('search_model_'.$siteid);
$type_module = getcache('type_module_'.$siteid);
if(isset($_GET['q'])) {
if(trim($_GET['q'])=='') {
header('Location: '.APP_PATH.'index.php?m=search');exit;
}
$typeid = emptyempty($_GET['typeid']) ? 0 : intval($_GET['typeid']);
$time = emptyempty($_GET['time']) || !in_array($_GET['time'],array('all','day','month','year','week')) ? 'all' : trim($_GET['time']);
$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); //过滤'%',用户全文搜索
$search_q = $q; //搜索原内容
//全站搜索
$sql = "select ";
$sql_time = $sql_tid = '';
if($typeid) $sql_tid = ' AND typeid = '.$typeid;
//按时间搜索
if($time == 'day') {
$search_time = SYS_TIME - 86400;
$sql_time = ' AND adddate > '.$search_time;
} elseif($time == 'week') {
$search_time = SYS_TIME - 604800;
$sql_time = ' AND adddate > '.$search_time;
} elseif($time == 'month') {
$search_time = SYS_TIME - 2592000;
$sql_time = ' AND adddate > '.$search_time;
} elseif($time == 'year') {
$search_time = SYS_TIME - 31536000;
$sql_time = ' AND adddate > '.$search_time;
} else {
$search_time = 0;
$sql_time = '';
}
if($page==1 && !$setting['sphinxenable']) {
//精确搜索
$commend = $this->db->get_one("`siteid`= '$siteid' $sql_tid $sql_time AND `data` like '%$q%'");
} else {
$commend = '';
}
//如果开启sphinx
if($setting['sphinxenable']) {
$sphinx = pc_base::load_app_class('search_interface', '', 0);
$sphinx = new search_interface();
$offset = $pagesize*($page-1);
$res = $sphinx->search($q, array($siteid), array($typeid), array($search_time, SYS_TIME), $offset, $pagesize, '@weight desc');
$totalnums = $res['total'];
//如果结果不为空
if(!emptyempty($res['matches'])) {
$result = $res['matches'];
}
} else {
$sql = "`siteid`= '$siteid' $sql_tid $sql_time AND `data` like '%$q%'";
$result = $this->db->listinfo($sql, 'searchid DESC', $page, 10);
$das = $result;
}
ok,搞定,这个功能做项目中遇到的,客户非要全站搜索,没办法。
热文精选
更多资讯推荐
更多- Stable Diffusion 2.0 发布,加强成人内容过滤
- .NET 7 正式发布
- A3Mall 开源商城系统 v2.1 发布
- FydeOS v14 版本更新:优化输入法体验+重构安卓子系统+全新应用启动器
- ThinkPHP V6.0.8版本发布——多环境变量配置支持
- 毕昇 JDK 8u292、11.0.11 发布!
- KubeVela 1.0:开启可编程式应用平台的未来
- Eclipse 4.19 稳定版发布
- 阿里巴巴 Arthas 3.5.0 版本发布,支持反编译打印行号和统一鉴权
- Debian 11 Bullseye 即将进入冻结,Debian 13 代号 Trixie
- Rancher 2.5 发布,新增支持边缘集群的 GitOps
- FlashDB IoT 超轻量级嵌入式数据库