고수님들 해결부탁드립니다 채택완료
이 부분이
if (is_pay_table($tmp_write_table)) { $temp_sql = " AND wr_65 != 'temp' "; } else { $temp_sql = ''; }
아래소스에서 특정게시물을 걸러주는데요
-----------------------------------------------------------------------
if (!defined('_GNUBOARD_')) exit; /// 함수 정의 시작
// 최신글 추출 - 선택한 그룹별로 원하는 수만큼 보여줌 function latest_group($skin_dir = "", $gr_id, $rows = 10, $subject_len = 40, $category = "", $orderby = "") { global $config; global $g4;
$list = array(); $limitrows = $rows;
$sqlgroup = " select bo_table, bo_subject from $g4[board_table] where gr_id = '$gr_id' and bo_use_search=1 order by bo_order_search"; $rsgroup = sql_query($sqlgroup);
if ($skin_dir) $latest_skin_path = "$g4[path]/skin/latest/$skin_dir"; else $latest_skin_path = "$g4[path]/skin/latest/$config[cf_latest_skin]";
for ($j = 0, $k = 0; $rowgroup = sql_fetch_array($rsgroup); $j++) { $bo_table = $rowgroup[bo_table];
// 테이블 이름구함 $sql = " select * from {$g4[board_table]} where bo_table = '$bo_table'"; $board = sql_fetch($sql);
$tmp_write_table = $g4[write_prefix] . $bo_table; // 게시판 테이블 실제이름
// 옵션에 따라 정렬 if (is_pay_table($tmp_write_table)) { $temp_sql = " AND wr_65 != 'temp' "; } else { $temp_sql = ''; }
$sql = "select * from $tmp_write_table where wr_is_comment = 0 {$temp_sql} "; $sql .= (!$category) ? "" : " and ca_name = '$category' "; $sql .= (!$orderby) ? " order by wr_id desc " : " order by $orderby desc, wr_id desc "; $sql .= " limit $limitrows";
$result = sql_query($sql);
for ($i = 0; $row = sql_fetch_array($result); $i++, $k++) {
if (!$orderby) $op_list[$k] = $row[wr_datetime]; else { $op_list[$k] = is_string($row[$orderby]) ? sprintf("%-256s", $row[$orderby]) : sprintf("%016d", $row[$orderby]); $op_list[$k] .= $row[wr_datetime]; }
$list[$k] = get_list($row, $board, $latest_skin_path, $subject_len);
$list[$k][bo_table] = $board[bo_table]; $list[$k][bo_subject] = $board[bo_subject];
$list[$k][bo_wr_subject] = cut_str($board[bo_subject] . $list[$k][wr_subject], $subject_len); } } if ($k > 0) array_multisort($op_list, SORT_DESC, $list); if ($k > $rows) array_splice($list, $rows);
ob_start(); include "$latest_skin_path/latest.skin.php"; $content = ob_get_contents(); ob_end_clean(); return $content; }
/// 함수 정의 끝
----------------------------------------------------------------------------------
아래 소스에서도 똑같은 게시물을 걸러내려면
어디를 수정해야 하는지 고수님들 부탁드립니다
if (!defined('_GNUBOARD_')) exit;
/* izen.group.lib.php 제작일 : 2006-12-08
지정 기간제 히트순 최근 게시물 수정본 http://www.sir.co.kr/bbs/tb.php/g4_tiptech/7328" rel="nofollow noreferrer noopener" target="_blank">http://www.sir.co.kr/bbs/tb.php/g4_tiptech/7328
그룹 최신글 관련하여 통합하도록 하였다. 정렬 필드값에 의해서 SQL 문을 추가하도록 하면 된다.
izen_group('스킨', '그룹명', 정렬필드, 출력갯수, 자를 문자열, 최근 몇일간을 출력할 것인가?); 예) echo izen_group('best10', '06', wr_hit, 10, 28, 30); */
# 인기글 function izen_usort1($a, $b) { return $b['wr_hit'] - $a['wr_hit']; }
# 헤드라인 function izen_usort2($a, $b) { return $b['wr_good'] - $a['wr_good']; }
# 최신글 추출 function izen_group($skin_dir="", $gr_id, $izen_sort, $rows=10, $subject_len=40, $listdate) { global $g4;
$nowYmd = date(Ymd); # 시작시간을 구합니다. $time = time(); $startYmd = date("Ymd",strtotime("-".$listdate." day", $time));
if ($skin_dir) { $latest_skin_path = "$g4[path]/skin/latest/$skin_dir"; } else { $latest_skin_path = "$g4[path]/skin/latest/basic"; }
$list = array();
$sql= " select bo_table from {$g4['board_table']} where gr_id='$gr_id' and bo_use_search='1' order by bo_order_search "; $ress = sql_query($sql); for($i=0, $ii=0; $board=sql_fetch_array($ress); $ii++) { $tmp_write_table = $g4['write_prefix'] . $board['bo_table']; # 게시판 테이블 전체이름 #$sql = "select * from `$tmp_write_table` where wr_is_comment <> '1' and date_format(wr_datetime, '%Y%m%d') between '$startYmd' and '$nowYmd' order by $sort desc limit 0, $rows ";
# 정렬 필드에 의해서 전체적으로 정렬, 관리한다. if ($izen_sort == 'wr_hit') { $sql_gr_Q = " wr_is_comment <> '1' and date_format(wr_datetime, '%Y%m%d') between '$startYmd' and '$nowYmd' order by $izen_sort desc limit 0, $rows "; } elseif ($izen_sort == 'wr_scrap') { $sql_gr_Q = " wr_is_comment <> '1' and date_format(wr_datetime, '%Y%m%d') between '$startYmd' and '$nowYmd' and wr_scrap <> 0 order by $izen_sort desc limit 0, $rows "; } elseif ($izen_sort == 'wr_datetime') # wr_1 헤드라인 { $sql_gr_Q = " wr_is_comment <> '1' and date_format(wr_datetime, '%Y%m%d') between '$startYmd' and '$nowYmd' and wr_1 = 1 order by $izen_sort desc limit 0, $rows "; } elseif ($izen_sort == 'wr_good') # { $sql_gr_Q = " wr_is_comment <> '1' and date_format(wr_datetime, '%Y%m%d') between '$startYmd' and '$nowYmd' and wr_good <> '0' order by $izen_sort desc limit 0, $rows "; } elseif ($izen_sort == 'wr_id') { $sql_gr_Q = " wr_is_comment <> '1' order by $izen_sort desc limit 0, $rows "; }
$sql = " select * from `$tmp_write_table` where $sql_gr_Q "; $result = sql_query($sql);
#for (; $row=sql_fetch_array($result); $i++) # *오류* 전체 게시물 가운데 날짜에 상관없이 히트순으로 지정한 갯수만큼 출력된다. for ($i==0; $row=sql_fetch_array($result); $i++) { $list[$i] = get_list($row, $board, $latest_skin_path, $subject_len, $listdate); } }
if ($izen_sort == 'wr_hit') { usort($list, 'izen_usort1'); }
elseif ($izen_sort == 'wr_good') { usort($list, 'izen_usort2'); }
$list= array_slice($list, 0, $rows);
ob_start(); include "$latest_skin_path/latest.skin.php"; $content = ob_get_contents(); ob_end_clean();
return $content; } ?>
답변 1개
if (is_pay_table($tmp_write_table)) { $temp_sql = " AND wr_65 != 'temp' "; <--이게 무슨 조건인지 설명이 있어야 하지만
아래쪽 izen_group 함수에서 저 코드를 동일하게 적용 시키려면 설명은 필요없고 아래처럼 하면 될 것 같은데 너무 부실한 질문 내용이라 확신이 없는 답변 입니다
is_pay_table 함수가 무엇을 하는 것인지 모르겠으나 바로 사용해도 된다면
if (is_pay_table($tmp_write_table)) $temp_sql = " wr_65 != 'temp' AND "; else $temp_sql =''
$sql = " select * from `$tmp_write_table` where $temp_sql $sql_gr_Q "; <---- 이곳 수정
답변에 대한 댓글 1개
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인