특정필드를 검색하는 최신글로 뿌리는데 적용이 안되네요. 채택완료
추운 주말인데 다들 감기 조심하세요~
이번에 최신글을 공부하면서 특정필드에서 XXX이 들어간 글을 검색해서 최신글로 뿌려주는 연습을 하고 있습니다.
G4에서 힌트를 얻어 복붙을 해보았는데 뜻대로 안되네요 ㅎㅎ
1. mwb.search.latest.lib.php 를 먼저 인클루드하고,
2. 최신글 불러오는 함수를 실행합니다.
</p><p><?php echo mwb_search_latest("theme/basic","admin_gallery",10,25,"","wr_10","3");?> </p><p>
우선을 이렇게 불러오게 해보았습니다.
순서대로 "스킨", "불러올게시판", "갯수", "글자수", "카테고리", "검색필드", "검색어" 순입니다.
3. mwb.search.latest.lib.php 의 소스는 다음과 같습니다.
</span></p><p><span style="font-size: 14.6667px;"><?php</span></p><p><span style="font-size: 14.6667px;">if (!defined('_GNUBOARD_')) exit;</span></p><p><span style="font-size: 14.6667px;"> </span></p><p><span style="font-size: 14.6667px;">// 최신글 추출</span></p><p><span style="font-size: 14.6667px;">// $cache_time 캐시 갱신시간</span></p><p><span style="font-size: 14.6667px;">function mwb_search_latest($skin_dir='', $bo_table, $rows=10, $subject_len=40, $sca="", $sfl = "", $stx="", $cache_time=1, $options='')</span></p><p><span style="font-size: 14.6667px;">{</span></p><p><span style="font-size: 14.6667px;"> global $g5;</span></p><p><span style="font-size: 14.6667px;"> </span></p><p><span style="font-size: 14.6667px;"> if (!$skin_dir) $skin_dir = 'basic';</span></p><p><span style="font-size: 14.6667px;"> </span></p><p><span style="font-size: 14.6667px;"> if(preg_match('#^theme/(.+)$#', $skin_dir, $match)) {</span></p><p><span style="font-size: 14.6667px;"> if (G5_IS_MOBILE) {</span></p><p><span style="font-size: 14.6667px;"> $latest_skin_path = G5_THEME_MOBILE_PATH.'/'.G5_SKIN_DIR.'/latest/'.$match[1];</span></p><p><span style="font-size: 14.6667px;"> if(!is_dir($latest_skin_path))</span></p><p><span style="font-size: 14.6667px;"> $latest_skin_path = G5_THEME_PATH.'/'.G5_SKIN_DIR.'/latest/'.$match[1];</span></p><p><span style="font-size: 14.6667px;"> $latest_skin_url = str_replace(G5_PATH, G5_URL, $latest_skin_path);</span></p><p><span style="font-size: 14.6667px;"> } else {</span></p><p><span style="font-size: 14.6667px;"> $latest_skin_path = G5_THEME_PATH.'/'.G5_SKIN_DIR.'/latest/'.$match[1];</span></p><p><span style="font-size: 14.6667px;"> $latest_skin_url = str_replace(G5_PATH, G5_URL, $latest_skin_path);</span></p><p><span style="font-size: 14.6667px;"> }</span></p><p><span style="font-size: 14.6667px;"> $skin_dir = $match[1];</span></p><p><span style="font-size: 14.6667px;"> } else {</span></p><p><span style="font-size: 14.6667px;"> if(G5_IS_MOBILE) {</span></p><p><span style="font-size: 14.6667px;"> $latest_skin_path = G5_MOBILE_PATH.'/'.G5_SKIN_DIR.'/latest/'.$skin_dir;</span></p><p><span style="font-size: 14.6667px;"> $latest_skin_url = G5_MOBILE_URL.'/'.G5_SKIN_DIR.'/latest/'.$skin_dir;</span></p><p><span style="font-size: 14.6667px;"> } else {</span></p><p><span style="font-size: 14.6667px;"> $latest_skin_path = G5_SKIN_PATH.'/latest/'.$skin_dir;</span></p><p><span style="font-size: 14.6667px;"> $latest_skin_url = G5_SKIN_URL.'/latest/'.$skin_dir;</span></p><p><span style="font-size: 14.6667px;"> }</span></p><p><span style="font-size: 14.6667px;"> }</span></p><p><span style="font-size: 14.6667px;"> </span></p><p><span style="font-size: 14.6667px;"> $cache_fwrite = false;</span></p><p><span style="font-size: 14.6667px;"> if(G5_USE_CACHE) {</span></p><p><span style="font-size: 14.6667px;"> $cache_file = G5_DATA_PATH."/cache/latest-{$bo_table}-{$skin_dir}-{$rows}-{$subject_len}.php";</span></p><p><span style="font-size: 14.6667px;"> </span></p><p><span style="font-size: 14.6667px;"> if(!file_exists($cache_file)) {</span></p><p><span style="font-size: 14.6667px;"> $cache_fwrite = true;</span></p><p><span style="font-size: 14.6667px;"> } else {</span></p><p><span style="font-size: 14.6667px;"> if($cache_time > 0) {</span></p><p><span style="font-size: 14.6667px;"> $filetime = filemtime($cache_file);</span></p><p><span style="font-size: 14.6667px;"> if($filetime && $filetime < (G5_SERVER_TIME - 3600 * $cache_time)) {</span></p><p><span style="font-size: 14.6667px;"> @unlink($cache_file);</span></p><p><span style="font-size: 14.6667px;"> $cache_fwrite = true;</span></p><p><span style="font-size: 14.6667px;"> }</span></p><p><span style="font-size: 14.6667px;"> }</span></p><p><span style="font-size: 14.6667px;"> </span></p><p><span style="font-size: 14.6667px;"> if(!$cache_fwrite)</span></p><p><span style="font-size: 14.6667px;"> include($cache_file);</span></p><p><span style="font-size: 14.6667px;"> }</span></p><p><span style="font-size: 14.6667px;"> }</span></p><p><span style="font-size: 14.6667px;"> </span></p><p><span style="font-size: 14.6667px;"> if(!G5_USE_CACHE || $cache_fwrite) {</span></p><p><span style="font-size: 14.6667px;"> $list = array();</span></p><p><span style="font-size: 14.6667px;"> $sql_search = "";</span></p><p><span style="font-size: 14.6667px;"> </span></p><p><span style="font-size: 14.6667px;"> $sql = " select * from {$g5['board_table']} where bo_table = '{$bo_table}' ";</span></p><p><span style="font-size: 14.6667px;"> $board = sql_fetch($sql);</span></p><p><span style="font-size: 14.6667px;"> $bo_subject = get_text($board['bo_subject']);</span></p><p><span style="font-size: 14.6667px;"> </span></p><p><span style="font-size: 14.6667px;"> $tmp_write_table = $g5['write_prefix'] . $bo_table; // 게시판 테이블 전체이름</span></p><p><span style="font-size: 14.6667px;"> </span></p><p><span style="font-size: 14.6667px;"> if ($sca || $stx) </span></p><p><span style="font-size: 14.6667px;"> { </span></p><p><span style="font-size: 14.6667px;"> $sql_search = get_sql_search($sca, $sfl, $stx); </span></p><p><span style="font-size: 14.6667px;"> $sql_search = "and ".$sql_search; </span></p><p><span style="font-size: 14.6667px;"> } </span></p><p><span style="font-size: 14.6667px;"> </span></p><p><span style="font-size: 14.6667px;"> $sql = " select * from {$tmp_write_table} where wr_is_comment = 0 $sql_search order by wr_num limit 0, {$rows} ";</span></p><p><span style="font-size: 14.6667px;"> $result = sql_query($sql);</span></p><p><span style="font-size: 14.6667px;"> for ($i=0; $row = sql_fetch_array($result); $i++) {</span></p><p><span style="font-size: 14.6667px;"> $list[$i] = get_list($row, $board, $latest_skin_url, $subject_len);</span></p><p><span style="font-size: 14.6667px;"> }</span></p><p><span style="font-size: 14.6667px;"> </span></p><p><span style="font-size: 14.6667px;"> if($cache_fwrite) {</span></p><p><span style="font-size: 14.6667px;"> $handle = fopen($cache_file, 'w');</span></p><p><span style="font-size: 14.6667px;"> $cache_content = "<?php\nif (!defined('_GNUBOARD_')) exit;\n\$bo_subject='".$bo_subject."';\n\$list=".var_export($list, true)."?>";</span></p><p><span style="font-size: 14.6667px;"> fwrite($handle, $cache_content);</span></p><p><span style="font-size: 14.6667px;"> fclose($handle);</span></p><p><span style="font-size: 14.6667px;"> }</span></p><p><span style="font-size: 14.6667px;"> }</span></p><p><span style="font-size: 14.6667px;"> </span></p><p><span style="font-size: 14.6667px;"> ob_start();</span></p><p><span style="font-size: 14.6667px;"> include $latest_skin_path.'/latest.skin.php';</span></p><p><span style="font-size: 14.6667px;"> $content = ob_get_contents();</span></p><p><span style="font-size: 14.6667px;"> ob_end_clean();</span></p><p><span style="font-size: 14.6667px;"> </span></p><p><span style="font-size: 14.6667px;"> return $content;</span></p><p><span style="font-size: 14.6667px;">}</span></p><p> </p><p><span style="font-size: 14.6667px;">?></span></p><div>
답변 1개
답변을 작성하려면 로그인이 필요합니다.
로그인
아주 기본적이고 당연한 것인데도 너무나 당연하니까 그냥 잊어버리고 마네요..
캐시는 생각도 안해보고 다른 곳에서만 찾아보니 당연히 답이 안나오는 것이었네요..
역시 캐시 때문에 편하면서도 불편한게 존재하는군요.
캐시 없이 불러올 수 있는 방법이 있으면 좋겠습니다.