千家信息网

设置phpcms不限模型搜索的方法

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章主要介绍了设置phpcms不限模型搜索的方法,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。phpcmsv9全站搜索,不限模型!ph
千家信息网最后更新 2026年11月03日设置phpcms不限模型搜索的方法

这篇文章主要介绍了设置phpcms不限模型搜索的方法,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。

phpcmsv9全站搜索,不限模型!

phpcms不限模型搜索的设置方法

phpcmsv9全站搜索,不限模型,今天又涨知识了。大家都知道,phpcms搜索时按照模型来搜索的,用了这个方法后,就可以全站搜索

简单修改一下v9默认的搜索功能,可以不按模型搜索全站内容

下面是被修改后的search模块中的index.php文件

db = pc_base::load_model('search_model');    $this->content_db = pc_base::load_model('content_model');  }    /**   * 关键词搜索   */  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 = empty($_GET['typeid']) ? 0 : intval($_GET['typeid']);      $time = empty($_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_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(!empty($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);      }       var_dump($result);      //如果结果不为空      if(!empty($result) || !empty($commend['id'])) {        foreach($result as $_v) {          if($_v['typeid']) $sids[$_v['typeid']][] = $_v['id'];        }         if(!empty($commend['id'])) {          if($commend['typeid']) $sids[$commend['typeid']][] = $commend['id'];        }        $model_type_cache = getcache('type_model_'.$siteid,'search');        $model_type_cache = array_flip($model_type_cache);        $data = array();        foreach($sids as $_k=>$_val) {          $tid = $_k;          $ids = array_unique($_val);           $where = to_sqls($ids, '', 'id');          //获取模型id          $modelid = $model_type_cache[$tid];           //是否读取其他模块接口          if($modelid) {            $this->content_db->set_model($modelid);                      /**            * 如果表名为空,则为黄页模型            */            if(empty($this->content_db->model_tablename)) {              $this->content_db = pc_base::load_model('yp_content_model');              $this->content_db->set_model($modelid);             }            $datas = $this->content_db->select($where, '*');          }          $data = array_merge($data,$datas);        }        $pages = $this->db->pages;        $totalnums = $this->db->number;               //如果分词结果为空        if(!empty($segment_q)) {          $replace = explode(' ', $segment_q);          foreach($replace as $replace_arr_v) {            $replace_arr[] =  ''.$replace_arr_v.'';          }          foreach($data as $_k=>$_v) {            $data[$_k]['title'] = str_replace($replace, $replace_arr, $_v['title']);            $data[$_k]['description'] = str_replace($replace, $replace_arr, $_v['description']);          }        } else {          foreach($data as $_k=>$_v) {            $data[$_k]['title'] = str_replace($q, ''.$q.'', $_v['title']);            $data[$_k]['description'] = str_replace($q, ''.$q.'', $_v['description']);          }        }      }      $execute_time = execute_time();      $pages = isset($pages) ? $pages : '';      $totalnums = isset($totalnums) ? $totalnums : 0;      $data = isset($data) ? $data : '';            includetemplate('search','list');    } else {      includetemplate('search','index');    }  }     public function public_get_suggest_keyword() {    $url = $_GET['url'].'&q='.$_GET['q'];    $trust_url = array('c8430fcf851e85818b546addf5bc4dd3');    $urm_md5 = md5($url);    if (!in_array($urm_md5, $trust_url)) exit;        $res = @file_get_contents($url);    if(CHARSET != 'gbk') {      $res = iconv('gbk', CHARSET, $res);    }    echo $res;  }    /**   * 提示搜索接口   * TODO 暂时未启用,用的是google的接口   */  public function public_suggest_search() {    //关键词转换为拼音    pc_base::load_sys_func('iconv');    $pinyin = gbk_to_pinyin($q);    if(is_array($pinyin)) {      $pinyin = implode('', $pinyin);    }    $this->keyword_db = pc_base::load_model('search_keyword_model');    $suggest = $this->keyword_db->select("pinyin like '$pinyin%'", '*', 10, 'searchnums DESC');        foreach($suggest as $v) {      echo $v['keyword']."\n";    }       }}?>

然后在header.html模板(不在这里,就在其他的搜索框页面)上面增加一个"不限"的搜索条件,将typeid对应的值为0,search中的index.html和lists.html也做相同处理,效果就出来那,这样只要不选择模型那么搜索出来的结果就是所有模型中符合条件的数据。

感谢你能够认真阅读完这篇文章,希望小编分享设置phpcms不限模型搜索的方法内容对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,遇到问题就找,详细的解决方法等着你来学习!

搜索 模型 方法 全站 结果 内容 接口 篇文章 关键 关键词 条件 模块 相同 精确 价值 全文 功能 同时 就是 拼音 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 山东特亿宝互联网科技有限公司 科技赋能下的互联网金融 互联网电商科技 河南真二互联网科技有限公司 智慧科技互联网 天扬科技互联网广告 新华互联网科技校企合作 青海省互联网新科技 华中科技有哪些互联网大佬 银川新华互联网科技学校地址 江苏南京365互联网科技 西藏七维空间互联网科技有限公司 互联网教育科技公司vipkid 河南猎农互联网科技有限公司 恒生互联网科技指数跳水 互联网科技大奖都有哪些公司 电子科技大学互联网创业大赛 云南互联网科技学费 北京互联网科技类企业分布 黑龙江互联网科技公司 互联网的科技 互联网科技集团 西安互联网科技 互联网金融 科技创新 居家互联网科技有限公司 剑昆互联网络科技有限公司临桂 中化能源互联网科技招聘 互联网科技项目计划书材料类 上海创道互联网络科技有限公司 盐城市攀科互联网科技有限公司
0