phpcms v9按照添加的栏目搜索
来源:互联网 发布:mac 编译安装 lnmp 编辑:程序博客网 时间:2024/05/22 03:28
找到 phpcms\model\content_model.class.php 大概113、302行左右,一共两处
$this->search_api($id,$inputinfo);
修改为:
$this->search_api($id,$systeminfo['catid'],$inputinfo);
找到 大概381行,将private function search_api 方法替换为以下代码
private 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);
}
}
2、修改搜索模板文件
找到 phpcms\model\search_model.calss.php 的 21行左右
将 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;
}
3、修改后台更新全站缓存位置
找到phpcms\models\content\classes\search_api.class.php 的第 31行
将 $system_keys = 'id,inputtime'.implode(',',$system_keys);
修改为
$system_keys = 'id,inputtime,catid,'.implode(',',$system_keys);
找到 $temp['adddate'] = $r['inputtime'];在后面加上
$temp['catid'] = $r['catid'];
找到phpcms\models\search\search_admin.php大概第85行,将foreach修改为下面
foreach ($datas as $id=>$r) {
$this->db->update_search($typeid ,$id, $r['fulltextcontent'],$r['title'],$r['adddate'], 1,$r['catid']);
}
4、修改前台搜索程序
找到 phpcms\models\search\index.php 第25行
在 if(isset($_GET['q'])) { 下加上
$catid =$_GET['catid']?" AND catid = '$_GET[catid]'":'';
然后在第57行左右,将
$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%'");
再找到第84行左右将
//如果分词结果为空
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%'";
}
修改为
//如果分词结果为空
if(!empty($segment_q)) {
$sql = "`siteid`= '$siteid' AND `typeid` = '$typeid' $catid $sql_time AND MATCH (`data`) AGAINST ('$segment_q' IN BOOLEAN MODE)";
} else {
$sql = "`siteid`= '$siteid' AND `typeid` = '$typeid' $catid $sql_time AND `data` like '%$q%'";
}
5、最后一步,进入数据库,找到数据表 v9_search,在此表中加一字段 catid int 4 做个索引,这样就完成了,前台调用的代码为:
<input type="hidden" name="m" value="search"/>
<input type="hidden" name="c" value="index"/>
<input type="hidden" name="a" value="init"/>
<input type="hidden" name="typeid" value="1" id="typeid"/>
<input type="hidden" name="catid" value="12" id="catid"/>
<input type="hidden" name="siteid" value="{$siteid}" id="siteid"/>
<input type="text" autocomplete="off" id="input" name="q" value="请输入关键词,如 北京大学" />
<input type="submit" onMouseOut="this.className=''" onMouseDown="this.className='mousedown'" onMouseOver="this.className='hover'" value="搜索一下" id="search-button">
- phpcms v9按照添加的栏目搜索
- phpcms v9怎么在后台实现全站搜索,而不是按照栏目来搜索
- Phpcms V9 后台实现全栏目搜索
- PHPcms v9分栏目搜索功能记录
- 【phpcms-v9】如何实现在含有子栏目的栏目下添加内容?
- PHPCMS V9调用栏目
- PhpCms V9调用指定栏目子栏目文章的方法
- 【phpcms-v9】category.php文件分析-添加栏目
- 【phpcms-v9】category.php文件分析-添加栏目
- phpcms v9如何给父级单页栏目添加内容?
- 【phpcms-v9】phpcms-v9中站群搜索的bug解决方案
- 【phpcms-v9】phpcms-v9视频模型的添加
- 【phpcms-v9】phpcms-v9视频模型的添加
- 【phpcms-v9】phpcms-v9列表页获取栏目文章所有的关键词
- 【phpcms-v9】phpcms-v9中栏目页的静态化生成
- 关于phpcms V9的调用栏目图片的调用方法
- phpcms v9 如何获取当前栏目的名?
- PHPCMS V9 subcat函数在分站调不出子栏目的解决方法
- 一篇很全面的freemarker教程
- mysql 优化之index
- 第51页第11题
- ios开发-Xcode必用插件
- static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别?
- phpcms v9按照添加的栏目搜索
- 自制超级精简版 360网盘6.5.2.1060(7文件,体积不到6M)
- android编译自己 内置的jar做法
- 做事如何细心
- android学习—— context 和 getApplicationContext()
- mysql连接报错---java.sql.SQLException: null, message from server
- 减少C++代码编译时间的方法
- AT命令
- linux开机自动启动脚本