인기검색어에 보이고 싶은게 아닌 것을 어떻게 하세요?
그냥 지운다구요?
또 검색해서 생기면요?
답은 지우지말고 보이지 않게 하면 되는거죠.
인기검색어 sum 테이블과 같이 동작 합니다.
왜?
불당팩의 새로운 인기검색어 기능은 sum 테이블만 조회 시키니까요.
넣을 때는 체크 안합니다.
뭔 짓거리(?)를 하는지 봐야 하니까요.
조회 될 때만 빼버립니다.
pp_level은 필터링이 적용될 회원 레벨 입니다.
회원 레벨에 따라서 필터링을 적용하는데, 기본이 1 입니다.
이 레벨 조정을 통해서 필터링 된 결과를 차별화 시켜 보여주는게 가능 합니다.
CREATE TABLE IF NOT EXISTS `g4_filter` (
`pp_id` int(11) NOT NULL AUTO_INCREMENT,
`pp_word` varchar(255) NOT NULL,
`pp_level` tinyint(4) NOT NULL DEFAULT '1',
`pp_datetime` datetime NOT NULL,
PRIMARY KEY (`pp_id`),
KEY `pp_word` (`pp_word`)
)
`pp_id` int(11) NOT NULL AUTO_INCREMENT,
`pp_word` varchar(255) NOT NULL,
`pp_level` tinyint(4) NOT NULL DEFAULT '1',
`pp_datetime` datetime NOT NULL,
PRIMARY KEY (`pp_id`),
KEY `pp_word` (`pp_word`)
)
config.php에
$g4['filter_table'] = $g4['table_prefix'] . "filter"; // 인기검색어 등에 쓰이는 필터 테이블
*** 필터링을 불러올 때 적용하면 join을 해야 하지만, 필터의 갯수는 몆채 안되니까 문제 안되지만
만일 filter의 갯수가 많아지면, 그 때는 join 자체가 시스템 부하의 큰 원인이 될 수 있습니다.
그래서, 머리 안쓰게 필터 sum에 레벨을 넣어버립니다.
lib/get_sql_search와 bbs/search.php 에
// 검색결과 필터링을 위한 레벨을 넣어준다
$sql3 = " select pp_level from $g4[filter_table] where pp_word = '$search_str' ";
$result3 = sql_fetch($sql3);
if ($result3) {
$sql4 = " update $g4[popular_sum_table] set pp_level=$result3[pp_level] where pp_date='$g4[time_ymd]' and pp_word='$search_str' $bo_sql ";
sql_query($sql4);
}
$sql3 = " select pp_level from $g4[filter_table] where pp_word = '$search_str' ";
$result3 = sql_fetch($sql3);
if ($result3) {
$sql4 = " update $g4[popular_sum_table] set pp_level=$result3[pp_level] where pp_date='$g4[time_ymd]' and pp_word='$search_str' $bo_sql ";
sql_query($sql4);
}
그리고 lib/popular.lib.php를 불당팩의 그것으로 바꿉니다.
- opencode.co.kr -