侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

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

php  /  管理员 发布于 7年前   164

phpcmsv9全站搜索,不限模型!

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

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

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

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

<?phpdefined('IN_PHPCMS') or exit('No permission resources.');pc_base::load_sys_class('form','',0);pc_base::load_sys_class('format','',0);class index {  function __construct() {    $this->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[] =  '<font color=red>'.$replace_arr_v.'</font>';          }          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, '<font color=red>'.$q.'</font>', $_v['title']);$data[$_k]['description'] = str_replace($q, '<font color=red>'.$q.'</font>', $_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教程,欢迎在线学习!

以上就是phpcms不限模型搜索的设置方法的详细内容,更多请关注其它相关文章!


  • 上一条:
    phpcms不允许上传该类型文件怎么办
    下一条:
    phpcms不能保存远程图片怎么办
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • PHP 8.4 Alpha 1现已发布!(0个评论)
    • 用Time Warden监控PHP中的代码处理时间(0个评论)
    • 在PHP中使用array_pop + yield实现读取超大型目录功能示例(0个评论)
    • Property Hooks RFC在PHP 8.4中越来越接近现实(0个评论)
    • 近期文章
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • 在go + gin中gorm实现指定搜索/区间搜索分页列表功能接口实例(0个评论)
    • 在go语言中实现IP/CIDR的ip和netmask互转及IP段形式互转及ip是否存在IP/CIDR(0个评论)
    • PHP 8.4 Alpha 1现已发布!(0个评论)
    • Laravel 11.15版本发布 - Eloquent Builder中添加的泛型(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-10
    • 2016-11
    • 2017-06
    • 2017-07
    • 2017-08
    • 2017-09
    • 2017-11
    • 2017-12
    • 2018-01
    • 2018-02
    • 2018-03
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2020-07
    • 2020-09
    • 2021-02
    • 2021-03
    • 2021-04
    • 2021-05
    • 2021-06
    • 2021-07
    • 2021-08
    • 2021-09
    • 2021-10
    • 2021-11
    • 2021-12
    • 2022-01
    • 2022-02
    • 2022-05
    • 2022-06
    • 2022-07
    • 2022-08
    • 2022-09
    • 2022-10
    • 2022-11
    • 2022-12
    • 2023-01
    • 2023-02
    • 2023-03
    • 2023-04
    • 2023-05
    • 2023-06
    • 2023-07
    • 2023-08
    • 2023-09
    • 2023-10
    • 2023-11
    • 2023-12
    • 2024-01
    • 2024-02
    • 2024-03
    • 2024-04
    • 2024-05
    • 2024-06
    • 2024-07
    • 2024-09
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客