phpcms中搜索(phpcmscn)

纸扎戏偶

今天给各位分享phpcms中搜索的知识,其中也会对phpcmscn进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

  • 1、PHPCMS的搜索功能怎么使用
  • 2、phpcms v9怎么按栏目搜索
  • 3、phpcms v9 全站搜索功能,怎么精确查找自定义字段?
  • 4、phpcms里如何实现多功能搜索

PHPCMS的搜索功能怎么使用

完整的代码如下

form action="/index.php" method="get" target="_blank" id="form"    

div class="52jcs86c6-2bea-b614-b922 am-input-group"    

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"    

input type="hidden" name="siteid" value="1"    

input type="text" class="52jcs2bea-b614-b922-e369 am-form-field am-input-sm" name="q" id="q" placeholder="搜索" data-validation-message="至少1个字符" minlength="1" required    

input type="hidden" name="page" value="1"    

span class="52jcsb614-b922-e369-413f am-input-group-btn"    

button class="52jcsb922-e369-413f-f219 am-btn am-btn-default" type="button"span class="52jcse369-413f-f219-b5df am-icon-search"/span/button    

/span    

/div    

   /form

其中typeid是模型ID,siteid是站点ID

琅枫个人博客。

如果想简化phpcms v9的搜索功能可以参考下

简化了phpcms的搜索功能。

phpcms v9怎么按栏目搜索

修改了全部栏目搜索不到数据的bug

1、修改后台添加、修改内容时添加栏目id到搜索表中

找到 phpcms\model\content_model.class.php 大概106、287行左右,一共两处

$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、最后一步,到数据库中,找到数据表 表前缀_search,在此表中加一字段 catid int 4 做个索引,去按栏目id搜索试试吧,可以了,调试可用。

phpcms v9 全站搜索功能,怎么精确查找自定义字段?

其实很简单,在你设置自定义字段的时候,如果细心会发现有两项叫做"作为搜索条件"和“作为全站搜索信息”,将它们选为“是”。另外结合你图片中的搜索模块的搜索分类等适当配置,应该是可以的。

phpcms里如何实现多功能搜索

第一个文件:phpcms\modules\search\index.php

12345678

//如果分词结果为空 if(!empty($segment_q)) { $sql = "`siteid`= '$siteid' AND `typeid` = '$typeid' $sql_time AND `data` like '%$q%'";//2014.1.13 by: mosell 不使用分词功能了 //$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%'"; }

还有以上修改大概是在第80行左右。

12

$datatest=array();//2014.1.13 by: mosell 用于显示搜索结果列表$datatest=$data;//2014.1.13 by: mosell 用于显示搜索结果列

以上大概在$execute_time = execute_time();$pages = isset($pages) ? $pages : '';这两句的上面,大概在第190多行吧

第二个文件:phpcms\templates\模板文件夹\search\list.html

把{loop $data $i $r} 改成 {loop $datatest $i $r}

phpcms中搜索的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于phpcmscn、phpcms中搜索的信息别忘了在本站进行查找喔。

文章版权声明:除非注明,否则均为我爱教程术原创文章,转载或复制请以超链接形式并注明出处。