首页建站经验 phpcms v9最新全站搜索教程分享

phpcms v9最新全站搜索教程分享

phpcms v9的搜索是根据模型来搜索的,今天分享一个不用模型搜索,直接全站搜索的代码,废话不多说了。看教程第一步:需要在phpcms v9后台 模块=》全站搜索=》模块配置里开启全站搜…

phpcms v9的搜索是根据模型来搜索的,今天分享一个不用模型搜索,直接全站搜索的代码,废话不多说了。看教程

第一步:需要在phpcms v9后台 模块=》全站搜索=》模块配置里开启全站搜索,如图:

第二步:替换代码(此步骤改变了phpcms v9 全站搜索的其它配置)

找到phpcms/modules/search/index.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,搞定,这个功能做项目中遇到的,客户非要全站搜索,没办法。

 

本文来自网络,不代表1号站长-站长学院|资讯交流平台立场。转载请注明出处: https://www.1cn.cc/jianzhan/jingyan/16949.html
上一篇phpcms v9后台模板(修改版)
下一篇 phpcms v9创建模块
admin

作者: admin

这里可以再内容模板定义一些文字和说明,也可以调用对应作者的简介!或者做一些网站的描述之类的文字或者HTML!

为您推荐

评论列表()

    联系我们

    联系我们

    0898-88888888

    在线咨询: QQ交谈

    邮箱: email@wangzhan.com

    工作时间:周一至周五,9:00-17:30,节假日休息

    关注微信
    微信扫一扫关注我们

    微信扫一扫关注我们

    关注微博
    返回顶部