인기검색어 특정단어 db 저장 제외 시키기 채택완료
그누보드 4 에서는
아래와 같이 하면 된다는 글을 봤습니다. 응용을 하면 그누보드 5에서도 가능할것같은데
여분필드 cf_2에 기록 제외용 필터 언어 cf-2의 db종류를 VARCHAR에서 TEXT로 변경 "기본환경설정"에서 여분필드의 "여분필드 2 설정값"에 필터할 단어를 적습니다.(콤마를 구분자로 사용)
bbs/search.php에서 검색어 기록부분을 다음과 같이 변경하여줍니다.
</strong>
//그누보드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);
} </p>
<p><strong>
그누보드 5 seacrh.php 파일 인기검색어 저장 부분 어디쯤에 넣어줘야할지
감이 안잡히네요.. 아래가 그누보드 4 인기검색어 insert 부분인것같은데..
</strong> </p>
<p>$str = '(';</p>
<p>for ($i=0; $i<count($s); $i++) {</p>
<p>if (trim($s[$i]) == '') continue;</p>
<p> </p>
<p>$search_str = $s[$i];</p>
<p> </p>
<p>// 인기검색어</p>
<p>insert_popular($field, $search_str);</p>
<p> </p>
<p>$str .= $op1;</p>
<p>$str .= "(";</p>
<p> </p>
<p>$op2 = '';</p>
<p>// 필드의 수만큼 다중 필드 검색 가능 (필드1+필드2...)</p>
<p>for ($k=0; $k<count($field); $k++) {</p>
<p>$str .= $op2;</p>
<p>switch ($field[$k]) {</p>
<p>case 'mb_id' :</p>
<p>case 'wr_name' :</p>
<p>$str .= "$field[$k] = '$s[$i]'";</p>
<p>break;</p>
<p>case 'wr_subject' :</p>
<p>case 'wr_content' :</p>
<p>if (preg_match("/[a-zA-Z]/", $search_str))</p>
<p>$str .= "INSTR(LOWER({$field[$k]}), LOWER('{$search_str}'))";</p>
<p>else</p>
<p>$str .= "INSTR({$field[$k]}, '{$search_str}')";</p>
<p>break;</p>
<p>default :</p>
<p>$str .= "1=0"; // 항상 거짓</p>
<p>break;</p>
<p>}</p>
<p>$op2 = " or ";</p>
<p>}</p>
<p>$str .= ")";</p>
<p> </p>
<p>$op1 = " {$sop} ";</p>
<p> </p>
<p>}</p>
<p><strong>
답변 1개
lib > common.lib.php 파일에서 insert_popular 함수 (2980라인 정도)를 수정하세요.
</p>
<p>// 인기검색어 입력
function insert_popular($field, $str)
{
global $g5, $config; // 변경</p>
<p> $filter = explode(",", $config[cf_2]); // 추가</p>
<p> if(!in_array('mb_id', $field) && !in_array($str, $filter)) { // 변경</p>
<p> $sql = " insert into {$g5['popular_table']} set pp_word = '{$str}', pp_date = '".G5_TIME_YMD."', pp_ip = '{$_SERVER['REMOTE_ADDR']}' ";
sql_query($sql, FALSE);
}
}</p>
<p>
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인