亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > CMS > 帝國Empire > 正文

帝國CMS二次開發搜索支持多關鍵字

2024-08-28 12:26:36
字體:
來源:轉載
供稿:網友

帝國CMS二次開發搜索支持多關鍵字

帝國CMS二次開發最終效果

二次開發修改方法

打開/e/search/index.php
1、找到:

1
2
3
4
5
6
//處理關鍵字
function SearchDoKeyboardVar($keyboard){
        $keyboard=RepPostVar2(trim($keyboard));
        $keyboard=str_replace('  ','',$keyboard);
        return $keyboard;
}

修改為:

1
2
3
4
5
6
7
8
9
//處理關鍵字
function SearchDoKeyboardVar($keyboard){
        $keyboard=RepPostVar2(trim($keyboard));
        //$keyboard=str_replace('  ','',$keyboard);
/*xuan 搜索關鍵字優化*/
$keyboard=preg_replace('/[s]+/s'' '$keyboard);
/*xuan 搜索關鍵字優化*/
        return $keyboard;
}

2、找到:

1
2
3
4
//(有兩處,修改第二處)
$where=$f." LIKE '%".$keyboard."%'";
7.0版為:
$where=$f." LIKE '%".str_replace(" ","%",$keyboard)."%'";

修改為:

1
2
3
4
5
6
7
/*xuan 搜索關鍵字優化*/
preg_match_all("/[^s]+/s",$keyboard,$keyarr);
foreach ($keyarr[0] as $val){
$tj.=$f." like '%".$val."%' or ";
}
$where=substr($tj,0,-4);
/*xuan 搜索關鍵字優化*/這樣即可。

懶人直接復制以下代碼替換/e/search/index.php中所有代碼即可
/e/search/index.php:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
<?php
require("../class/connect.php");
require("../class/db_sql.php");
require("../data/dbcache/class.php");
require("../class/q_functions.php");
eCheckCloseMods('search');//關閉模塊
$link=db_connect();
$empire=new mysqlquery();
//處理關鍵字
function SearchDoKeyboardVar($keyboard){
        $keyboard=RepPostVar2(trim($keyboard));
        //$keyboard=str_replace('  ','',$keyboard);
/*xuan 搜索關鍵字優化*/
$keyboard=preg_replace('/[s]+/s'' '$keyboard);
/*xuan 搜索關鍵字優化*/
        return $keyboard;
}
//返回SQL
function SearchDoKeyboard($f,$hh,$keyboard){
        $where='';
        $keyboard=SearchDoKeyboardVar($keyboard);
        if(empty($keyboard))
        {
                return "";
        }
        if(!empty($hh))
        {
                if($hh=='LT')//小于
                {
                        $where=$f."<'".$keyboard."'";
                }
                elseif($hh=='GT')//大于
                {
                        $where=$f.">'".$keyboard."'";
                }
                elseif($hh=='EQ')//等于
                {
                        $where=$f."='".$keyboard."'";
                }
                elseif($hh=='LE')//小于等于
                {
                        $where=$f."<='".$keyboard."'";
                }
                elseif($hh=='GE')//大于等于
                {
                        $where=$f.">='".$keyboard."'";
                }
                elseif($hh=='NE')//不等于
                {
                        $where=$f."<>'".$keyboard."'";
                }
                elseif($hh=='IN')//包含
                {
                        $kr=explode(' ',$keyboard);
                        $kcount=count($kr);
                        $kbs='';
                        $dh='';
                        for($i=0;$i<$kcount;$i++)
                        {
                                $kr[$i]=(float)$kr[$i];
                                if(empty($kr[$i]))
                                {
                                        continue;
                                }
                                if($kbs)
                                {
                                        $dh=',';
                                }
                                $kbs.=$dh."'".$kr[$i]."'";
                        }
                        if($kbs)
                        {
                                $where=$f." IN (".$kbs.")";
                        }
                        else
                        {
                                return '';
                        }
                }
                elseif($hh=='BT')//范圍
                {
                        $keyboard=ltrim($keyboard);
                        if(!strstr($keyboard,' '))
                        {
                                return '';
                        }
                        $kr=explode(' ',$keyboard);
                        $kr[0]=(float)$kr[0];
                        $kr[1]=(float)$kr[1];
                        if(!trim($kr[0])||!trim($kr[1]))
                        {
                                return '';
                        }
                        $where=$f." BETWEEN '".$kr[0]."' and '".$kr[1]."'";
                }
                else//相似
                {
                        $where=$f." LIKE '%".$keyboard."%'";
                }
        }
        else
        {
                //$where=$f." LIKE '%".str_replace(" ","%",$keyboard)."%'";
/*xuan 搜索關鍵字優化*/
preg_match_all("/[^s]+/s",$keyboard,$keyarr);
foreach ($keyarr[0] as $val){
$tj.=$f." like '%".$val."%' or ";
}
$where=substr($tj,0,-4);
/*xuan 搜索關鍵字優化*/
        }
        return $where;
}
//變量
if($_GET['searchget']==1)
{
        $_POST=$_GET;
}
$ip=egetip();
$searchtime=time();
$getvar=$_POST['getvar'];
if(empty($getvar))
{
        $getfrom="history.go(-1)";
        $dogetvar='';
}
else
{
        $getfrom="../../search/";
        $dogetvar="&getvar=1";
}
//返回
$getfrom=DoingReturnUrl($getfrom,$_POST['ecmsfrom']);
//搜索用戶組
if($public_r['searchgroupid'])
{
        $psearchgroupid=$public_r['searchgroupid'];
        @include("../data/dbcache/MemberLevel.php");
        $searchgroupid=(int)getcvar('mlgroupid');
        if($level_r[$searchgroupid][level]<$level_r[$psearchgroupid][level])
        {
                printerror("NotLevelToSearch",$getfrom,1);
        }
}
//搜索間隔
$lastsearchtime=getcvar('lastsearchtime');
if($lastsearchtime)
{
        if($searchtime-$lastsearchtime<$public_r[searchtime])
        {
                printerror("SearchOutTime",$getfrom,1);
        }
}
//搜索字段
$searchclass=$_POST['show'];
if(empty($searchclass)||@strstr($searchclass," "))
{
        printerror("SearchNotRecord",$getfrom,1);
}
//時間范圍
$add='';
$addtime='';
$starttime=RepPostVar($_POST['starttime']);
if(empty($starttime))
{
        $starttime="0000-00-00";
}
$endtime=RepPostVar($_POST['endtime']);
if(empty($endtime))
{
        $endtime="0000-00-00";
}
if($endtime!="0000-00-00")
{
        $addtime=" and (newstime BETWEEN '".to_time($starttime." 00:00:00")."' and '".to_time($endtime." 23:59:59")."')";
}
//價格
$addprice='';
$startprice=(int)$_POST['startprice'];
$endprice=(int)$_POST['endprice'];
if($endprice)
{
        $addprice=" and (price BETWEEN ".$startprice." and ".$endprice.")";
}
//搜索欄目及表
$classid=RepPostVar($_POST['classid']);
$s_tbname=RepPostVar($_POST['tbname']);
$s_tempid=(int)$_POST['tempid'];
$trueclassid=0;
if($classid)//按欄目
{
        if(strstr($classid,","))//多欄目
        {
                $son_r=sys_ReturnMoreClass($classid,1);
                $trueclassid=$son_r[0];
                $add.=' and ('.$son_r[1].')';
        }
        else
        {
                $trueclassid=intval($classid);
                $add.=$class_r[$trueclassid][islast]?" and classid='$trueclassid'":" and ".ReturnClass($class_r[$trueclassid][sonclass]);
        }
        $tbname=$class_r[$trueclassid][tbname];
        $modid=$class_r[$trueclassid][modid];
}
elseif($s_tbname)//按<a href="http://www.11px.cn/tags/sjb/" target="_blank">數據表</a>
{
        $tbnamenum=$empire->gettotal("select count(*) as total from {$dbtbpre}enewstable where tbname='$s_tbname' limit 1");
        if(!$tbnamenum)
        {
                printerror("SearchNotRecord",$getfrom,1);
        }
        $tbname=$s_tbname;
        //模型id
        $thestemp_r=$empire->fetch1("select modid from ".GetTemptb("enewssearchtemp")." where tempid='$s_tempid'");
        if(empty($thestemp_r['modid']))
        {
                printerror("SearchNotRecord",$getfrom,1);
        }
        $modid=$thestemp_r['modid'];
}
else
{
        $tbname=$public_r['tbname'];
        $modid=0;
}
//表不存在
if(empty($tbname)||InfoIsInTable($tbname))
{
        printerror("SearchNotRecord",$getfrom,1);
}
//標題分類
$ttid=RepPostVar($_POST['ttid']);
$truettid=0;
if($ttid)
{
        if(strstr($ttid,","))//多標題分類
        {
                $son_r=sys_ReturnMoreTT($ttid);
                $truettid=$son_r[0];
                $add.=' and ('.$son_r[1].')';
        }
        else
        {
                $truettid=intval($ttid);
                $add.=" and ttid='$truettid'";
        }
}
//會員
$member=$_POST['member'];
if($member==1)
{
        $add.=' and ismember=1';
}
elseif($member==2)
{
        $add.=' and ismember=0';
}
//模型
$tempr=array();
if(empty($class_r[$trueclassid][searchtempid]))
{
        if(empty($modid))
        {
                $tempr=$empire->fetch1("select modid from ".GetTemptb("enewssearchtemp")." where isdefault=1 limit 1");
        }
        else
        {
                $tempr[modid]=$modid;
        }
}
else
{
        $tempr[modid]=$modid;
}
//關鍵字
$keyboard=$_POST['keyboard'];
$keyboardone=0;
if(is_array($keyboard))
{}
elseif(strstr($keyboard,','))
{
        $keyboard=explode(',',$keyboard);
}
else
{
        $keyboard=trim($keyboard);
        $len=strlen($keyboard);
        if($len<$public_r[min_keyboard]||$len>$public_r[max_keyboard])
        {
                printerror("MinKeyboard",$getfrom,1);
        }
        $keyboardone=1;
}
//符號
$hh=$_POST['hh'];
$hhone=0;
if(is_array($hh))
{}
elseif(strstr($hh,','))
{
        $hh=explode(',',$hh);
}
else
{
        $hhone=1;
}
//字段
if(!is_array($searchclass))
{
        $searchclass=explode(',',$searchclass);
}
$andor=$_POST['andor'];
$andor=$andor=='and'?'and':'or';
$mr=$empire->fetch1("select searchvar,tbname from {$dbtbpre}enewsmod where mid='$tempr[modid]'");
if(!strstr($mr[searchvar],",price,"))//是否包含價格
{
        $addprice="";
        $startprice=0;
        $endprice=0;
}
//搜索特殊字段
$mr[searchvar].='id,keyboard,userid,username,';
$where='';
$newsearchclass='';
$count=count($searchclass);
for($i=0;$i<$count;$i++)
{
        if(empty($searchclass[$i]))
        {
                continue;
        }
        $searchclass[$i]=str_replace(',','',$searchclass[$i]);
        if(!strstr($mr[searchvar],",".$searchclass[$i].","))
        {
                continue;
        }
        $searchclass[$i]=RepPostVar($searchclass[$i]);
        $dh=empty($newsearchclass)?'':',';
        $newsearchclass.=$dh.$searchclass[$i];
        $dohh=$hhone==1?$hh:$hh[$i];
        $dokeyboard=$keyboardone==1?$keyboard:$keyboard[$i];
        $onewhere=SearchDoKeyboard($searchclass[$i],$dohh,$dokeyboard);
        if($onewhere)
        {
                $or=empty($where)?'':' '.$andor.' ';
                $where.=$or.'('.$onewhere.')';
        }
}
//參數錯
if(empty($newsearchclass))
{
        printerror("SearchNotRecord",$getfrom,1);
}
if($where)
{
        $add.=' and ('.$where.')';
}
$allwhere=$add.$addtime.$addprice;
$keyboard=$keyboardone==1?SearchDoKeyboardVar($keyboard):'';
$andsql=addslashes($allwhere);
if(strlen($newsearchclass)>250||strlen($classid)>200||strlen($andsql)>3000||strlen($keyboard)>100||strlen($ttid)>200)
{
        printerror("SearchNotRecord",$getfrom,1);
}
//驗證碼
$checkpass=md5($allwhere.$tbname);
$query="select count(*) as total from {$dbtbpre}ecms_".$tbname.($allwhere?' where '.substr($allwhere,5):'');
$search_r=$empire->fetch1("select searchid from {$dbtbpre}enewssearch where checkpass='$checkpass' limit 1");
$searchid=$search_r[searchid];
//排序
$orderby=RepPostVar($_POST['orderby']);
$myorder=(int)$_POST['myorder'];
if($orderby)
{
        $orderr=ReturnDoOrderF($tempr[modid],$orderby,$myorder);
        $orderby=$orderr['returnf'];
}
else
{
        $orderby='newstime';
}
//是否有歷史記錄
if($searchid)
{
    $search_num=$empire->gettotal($query);
        $sql=$empire->query("update {$dbtbpre}enewssearch set searchtime='$searchtime',result_num='$search_num',onclick=onclick+1,orderby='$orderby',myorder='$myorder',tempid='$s_tempid' where searchid='$searchid'");
        if(empty($search_num))
        {
                $searchid=0;
        }
}
else
{
        $search_num=$empire->gettotal($query);
        if(empty($search_num))
        {
                $searchid=0;
        }
        else
        {
                $iskey=$keyboardone==1?0:1;
                $sql=$empire->query("insert into {$dbtbpre}enewssearch(searchtime,keyboard,searchclass,result_num,searchip,classid,onclick,orderby,myorder,checkpass,tbname,tempid,iskey,andsql,trueclassid) values('$searchtime','$keyboard','$newsearchclass','$search_num','$ip','$classid',1,'$orderby','$myorder','$checkpass','$tbname','$s_tempid','$iskey','$andsql','$trueclassid')");
                $searchid=$empire->lastid();
        }
}
//設置最后搜索時間
$set1=esetcookie("lastsearchtime",$searchtime,$searchtime+3600*24);
if(!$searchid)
{
        printerror("SearchNotRecord",$getfrom,1);
}
else
{
        Header("Location:result/?searchid=$searchid".$dogetvar);
}
db_close();
$empire=null;
?>

本方法兼容帝國CMS7.0/7.2,其他版本暫未測試。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
精品日韩视频在线观看| 成人av色在线观看| 国产精品h在线观看| 亚洲人成网站在线播| 国外成人在线播放| 亚洲视频综合网| 日韩av网站电影| 亚洲午夜性刺激影院| 俺也去精品视频在线观看| 国产精品综合不卡av| 亚洲激情视频网| 国语自产在线不卡| 欧美成人手机在线| 91系列在线观看| 精品久久久在线观看| 97精品欧美一区二区三区| 欧美精品久久久久a| 欧美大人香蕉在线| 这里只有精品在线播放| 最近2019中文字幕mv免费看| 91色视频在线导航| 亚洲日本成人网| 日韩视频亚洲视频| 亚洲人成网站999久久久综合| 国产亚洲精品综合一区91| 亚洲影院在线看| 66m—66摸成人免费视频| 欧美尤物巨大精品爽| 精品偷拍一区二区三区在线看| 亚洲一区精品电影| 中文日韩电影网站| 国产久一一精品| 欧美另类高清videos| 欧美成人全部免费| 国产精品成人国产乱一区| 91网站免费观看| 国产精品久久久av久久久| 色婷婷av一区二区三区在线观看| 色偷偷综合社区| 色与欲影视天天看综合网| 中文字幕视频一区二区在线有码| 日韩高清av在线| 久久亚洲春色中文字幕| 成人免费视频a| 国产精品一区二区三区在线播放| 这里只有精品在线观看| 国产精品丝袜久久久久久高清| 中文字幕在线成人| 亚洲精品资源美女情侣酒店| 亚洲视频在线视频| 久色乳综合思思在线视频| 日韩亚洲欧美中文在线| 国产精品久久久久久av| 国产精品久久久久久亚洲影视| 国产精品视频免费观看www| 国产精品中文字幕久久久| 国产+人+亚洲| 精品国产拍在线观看| 亚洲激情在线视频| 国外色69视频在线观看| 成人欧美一区二区三区黑人孕妇| 国自产精品手机在线观看视频| 精品人伦一区二区三区蜜桃免费| 欧美极品少妇xxxxx| 日本精品久久中文字幕佐佐木| 2019中文字幕免费视频| 欧美国产极速在线| 日韩电影网在线| 欧美日韩人人澡狠狠躁视频| 欧美日韩美女在线观看| 亚洲欧美另类国产| 欧美日产国产成人免费图片| 亚洲乱码国产乱码精品精天堂| 欧美日韩xxxxx| 91久久国产婷婷一区二区| 91理论片午午论夜理片久久| 日韩激情在线视频| 国产999视频| 亚洲色图综合网| 国内精品中文字幕| 亚洲国产精品女人久久久| 九九精品视频在线| 日韩av色在线| 精品国产美女在线| 久久久人成影片一区二区三区观看| 国产福利视频一区二区| 亚洲欧美综合区自拍另类| 久久久av网站| 亚洲最大激情中文字幕| 久久99久国产精品黄毛片入口| 国产精品黄视频| 久热精品在线视频| 中文字幕视频在线免费欧美日韩综合在线看| 久久中文字幕在线| 成人网址在线观看| 国产精欧美一区二区三区| 久久久人成影片一区二区三区观看| 国产成人免费av| 久久99国产精品自在自在app| 精品福利视频导航| 亚洲人成网在线播放| 成人久久久久久| 亚洲欧美在线第一页| 日韩av资源在线播放| 午夜精品一区二区三区av| 国产精品日韩一区| 欧美理论电影在线播放| 91系列在线播放| 欧美成人精品不卡视频在线观看| 亚洲最大福利视频网| 国产精品视频中文字幕91| 欧美日本啪啪无遮挡网站| 伊人伊成久久人综合网小说| 欧美黑人性视频| 黄色精品在线看| 国产成人一区三区| 亚洲黄色有码视频| 欧美激情影音先锋| 国产精品一区av| 亚洲自拍另类欧美丝袜| 日韩激情第一页| 欧美丰满少妇xxxx| 免费97视频在线精品国自产拍| 亚洲欧美日韩成人| 亚洲视频999| 久久久久久久91| 国产精品视频在线播放| 日韩极品精品视频免费观看| 欧美夫妻性视频| 国产亚洲人成网站在线观看| 91人成网站www| 欧美一级淫片aaaaaaa视频| 欧美在线视频一区| 欧美性感美女h网站在线观看免费| 日韩av中文字幕在线播放| 日韩精品中文字幕久久臀| 国产一区二区三区网站| 亚洲综合自拍一区| 91精品久久久久久久久久久| 欧美亚洲激情在线| 国产成人亚洲综合青青| 欧美成人黑人xx视频免费观看| 日韩一区二区福利| 美女av一区二区三区| 国产91色在线播放| 国产v综合ⅴ日韩v欧美大片| 九九精品视频在线| 91免费高清视频| 久久久久久香蕉网| 国产精品久久久久久网站| 国产精品久久久久7777婷婷| 欧美激情一级二级| 国产精品视频白浆免费视频| 亚洲视频电影图片偷拍一区| 色小说视频一区| 亚洲成人网在线观看| 亚洲欧美成人精品| 国产精品日韩在线播放| 日本一区二区不卡| 久久久久久国产精品| 69视频在线免费观看| 欧美乱大交做爰xxxⅹ性3| 久久精品视频在线播放| 久久影院免费观看|