인기검색어 특정단어 db 저장 제외 시키기
본문
그누보드 4 에서는
아래와 같이 하면 된다는 글을 봤습니다. 응용을 하면 그누보드 5에서도 가능할것같은데
여분필드 cf_2에 기록 제외용 필터 언어 cf-2의 db종류를 VARCHAR에서 TEXT로 변경 "기본환경설정"에서 여분필드의 "여분필드 2 설정값"에 필터할 단어를 적습니다.(콤마를 구분자로 사용)
bbs/search.php에서 검색어 기록부분을 다음과 같이 변경하여줍니다.
//그누보드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 부분인것같은데..
$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
lib > common.lib.php 파일에서 insert_popular 함수 (2980라인 정도)를 수정하세요.
// 인기검색어 입력
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);
}
}
답변을 작성하시기 전에 로그인 해주세요.