채택완료

인기검색어 특정단어 db 저장 제외 시키기

2018-01-26 (금) 05:09:18 2,665

그누보드 4 에서는

아래와 같이 하면 된다는 글을 봤습니다. 응용을 하면 그누보드 5에서도 가능할것같은데

여분필드 cf_2에 기록 제외용 필터 언어 cf-2의 db종류를 VARCHAR에서 TEXT로 변경   "기본환경설정"에서 여분필드의 "여분필드 2 설정값"에 필터할 단어를 적습니다.(콤마를 구분자로 사용) 

bbs/search.php에서 검색어 기록부분을 다음과 같이 변경하여줍니다. 

Copy
//그누보드4 검색어기록 필터 20121221 
$filter = explode(",", $config[cf_2]); 
 if(!in_array($search_str, $filter)) { 

$sql = " insert into $g4[popular_table] set pp_word = '$search_str', pp_date = '$g4[time_ymd]', pp_ip = '$_SERVER[REMOTE_ADDR]' "; 
sql_query($sql, FALSE); 

}
 

그누보드 5 seacrh.php 파일 인기검색어 저장 부분 어디쯤에 넣어줘야할지 

감이 안잡히네요.. 아래가 그누보드 4 인기검색어 insert 부분인것같은데..

Copy
$str = '(';

for ($i=0; $i<count($s); $i++) {

if (trim($s[$i]) == '') continue;

 

$search_str = $s[$i];

 

// 인기검색어

insert_popular($field, $search_str);

 

$str .= $op1;

$str .= "(";

 

$op2 = '';

// 필드의 수만큼 다중 필드 검색 가능 (필드1+필드2...)

for ($k=0; $k<count($field); $k++) {

$str .= $op2;

switch ($field[$k]) {

case 'mb_id' :

case 'wr_name' :

$str .= "$field[$k] = '$s[$i]'";

break;

case 'wr_subject' :

case 'wr_content' :

if (preg_match("/[a-zA-Z]/", $search_str))

$str .= "INSTR(LOWER({$field[$k]}), LOWER('{$search_str}'))";

else

$str .= "INSTR({$field[$k]}, '{$search_str}')";

break;

default :

$str .= "1=0"; // 항상 거짓

break;

}

$op2 = " or ";

}

$str .= ")";

 

$op1 = " {$sop} ";

 

}
|

답변 1개

채택된 답변
+20 포인트
2018-01-26 (금) 08:28:47

lib > common.lib.php 파일에서 insert_popular 함수 (2980라인 정도)를 수정하세요.

Copy
// 인기검색어 입력
function insert_popular($field, $str)
{
    global $g5, $config; // 변경

    $filter = explode(",", $config[cf_2]);  // 추가

    if(!in_array('mb_id', $field) && !in_array($str, $filter)) { // 변경

        $sql = " insert into {$g5['popular_table']} set pp_word = '{$str}', pp_date = '".G5_TIME_YMD."', pp_ip = '{$_SERVER['REMOTE_ADDR']}' ";
        sql_query($sql, FALSE);
    }
}

답변을 작성하려면 로그인이 필요합니다.