PHPcms v9分栏目搜索功能记录
来源:互联网 发布:水泥胶砂强度试验数据 编辑:程序博客网 时间:2024/05/29 07:16
之前做过一个搜索功能,是直接调用PHPcms v9本身的全文搜索,通过自定义typeid来定义自己所要搜索的栏目,无意间在网上发现一个自定义catid来搜索的,感觉十分不错。
一、 修改phpcms/model/content_model.class.php
//112行附近$this->search_api($id,$inputinfo); 修改为:$this->search_api($id,$systeminfo['catid'],$inputinfo);
//public function search_api这个函数进行修改 public function search_api($id = 0,$catid, $data = array(), $action = 'update'){ $type_arr = getcache('search_model_'.$this->siteid,'search'); $typeid = $type_arr[$this->modelid]['typeid']; if($action == 'update'){ $fulltext_array = getcache('model_field_'.$this->modelid,'model'); foreach($fulltext_array AS $key=>$value){ if($value['isfulltext']) { $fulltextcontent .= $data['system'][$key] ? $data['system'][$key] : $data['model'][$key]; } } $this->search_db->update_search($typeid ,$id, $fulltextcontent,addslashes($data['system']['title']).' '.addslashes($data['system']['keywords']),$data['system']['inputtime'],'',$catid); }elseif($action == 'delete') { $this->search_db->delete_search($typeid ,$id); } }
二、修改phpcms/model/search_model.class.php
//找到update_search方法public function update_search($typeid,$id = 0 ,$data = '',$text = '',$adddate = 0,$iscreateindex=0,$catid){ $segment = pc_base::load_sys_class('segment'); //分词结果 $fulltext_data = $segment->get_keyword($segment->split_result($data)); $fulltext_data = $text.' '.$fulltext_data; if(!$iscreateindex){ $r = $this->get_one(array('typeid'=>$typeid,'id'=>$id),'searchid'); } if($r){ $searchid = $r['searchid']; $this->update(array('data'=>$fulltext_data,'adddate'=>$adddate,'catid'=>$catid),array('typeid'=>$typeid,'id'=>$id)); }else{ $siteid = param::get_cookie('siteid'); $searchid = $this->insert(array('typeid'=>$typeid,'id'=>$id,'adddate'=>$adddate,'data'=>$fulltext_data,'siteid'=>$siteid,'catid'=>$catid),true); } return $searchid; }
三、修改全站更新缓存phpcms/modules/content/classes/search_api.class.php
//31行左右$system_keys = 'id,inputtime,'.implode(',',$system_keys);//修改为$system_keys = 'id,inputtime,catid,'.implode(',',$system_keys);
//62行左右$temp['adddate'] = $r['inputtime'];//下面增加$temp['catid'] = $r['catid'];
四、修改phpcms/modules/search/search_admin.php
//86行$this->db->update_search($typeid ,$id, $r['fulltextcontent'],$r['title'],$r['adddate'], 1,$r['catid']); //这里增加了$r['catid']
五、修改phpcms/modules/search/index.php
//找到25行左右if(isset($_GET['q']))在下面添加$catid =$_GET['catid']?" AND catid = '$_GET[catid]'":'';
//找到60行左右$commend = $this->db->get_one("`typeid` = '$typeid' $sql_time AND `data` like '%$q%'");//修改为$commend = $this->db->get_one("`typeid` = '$typeid' $sql_time $catid AND `data` like '%$q%'");
//找到83行左右if(!empty($segment_q)) { $sql = "`siteid`= '$siteid' AND `typeid` = '$typeid' $sql_time AND MATCH (`data`) AGAINST ('$segment_q' IN BOOLEAN MODE)"; } else { $sql = "`siteid`= '$siteid' AND `typeid` = '$typeid' $sql_time AND `data` like '%$q%'";}//修改为:$sql = "`siteid`= '$siteid' AND `typeid` = '$typeid' $catid $sql_time AND `data` like '%$q%'";//这样修改可以防止分词搜索不到结果的情况
六、修改数据库_search增加字段catid
int(4)并且做个索引,已经有栏目的数据可以用数据库查询代码导入,没有数据的,后台提交会自动生成索引
注意:要安装phpcms的全站搜索,并且对需要搜索的栏目添加搜索分类
前台调用代码:
{php $cat_id = 6;}<!--此处是一级栏目id,可以自己设置--><form name="search" id="" action="" method="get"> <li>关 键 词 :<input name="q" value="请输入查询关键词" type="text" onclick="javascript:document.getElementById('q').value='';" id="q" style="width:150px;"/></li> <li>产品类别:<select name="catid" style=" width:150px;"> <option value="{$cat_id}">所有产品分类</option> {loop subcat($cat_id) $v} {php if($v['type']!=0) continue;} <option value="{$v[catid]}">{$v[catname]}</option> {/loop} </select></li> <input type="hidden" value="search" name="m"> <input type="hidden" value="index" name="c"> <input type="hidden" value="init" name="a"> <input id="typeid" type="hidden" value="1" name="typeid"> <input id="siteid" type="hidden" value="1" name="siteid"> <li><input type="submit" name="submit" id="submit" value=""></li> </form>
OK,大功告成!
2 0
- PHPcms v9分栏目搜索功能记录
- PHPCMS V9 搜索功能
- Phpcms V9 后台实现全栏目搜索
- phpcms v9按照添加的栏目搜索
- PHPCMS V9调用栏目
- phpcms v9怎么在后台实现全站搜索,而不是按照栏目来搜索
- phpcms v9在表单向导页面增加搜索功能
- phpcms v9 后台增加搜索关键字编辑管理功能
- 【phpcms-v9】后台发布文章时切换栏目的功能实现
- phpcms v9中的$CATEGORYS栏目数组
- phpcms v9 当前栏目信息标签
- phpcms v9中的$CATEGORYS栏目数组
- phpcms v9中调取栏目图片
- Phpcms V9判定当前栏目,让当前栏目高亮
- PhpCms V9调用指定栏目子栏目文章的方法
- 【phpcms-v9】phpcms-v9中将选中的批量文章推送到推荐位、推送到专题及推送到其他栏目的功能
- phpcms V9浏览记录 插件
- 【phpcms-v9】phpcms-v9中的标签链接到搜索页
- 小数在计算机中的存储形式
- 关于 多进程epoll 与 “惊群”问题
- Java RandomAccessFile用法
- symfony安装使用
- CocoaPods 安装和应用
- PHPcms v9分栏目搜索功能记录
- Qt Creator的下载、安装及试用
- 冷门实用的定律(一):登门槛效应
- 189邮件收取
- hashcode和equals为何要同时重写
- 实现类似输入法弹起,布局收缩的效果
- react-native的兼容性(Android、Ios)
- 冷门实用的定律(二):蘑菇定律
- vs2008创建xpcom组件