혹시 그룹 베스트글을 게시판명으로 지정해서 쓸수있을까요?
본문
혹시 그룹이 아니라 게시판을 지정해서도 가능할까요?
예) free, qna, guestbook, news... 이런식으로 여러 게시판 id값을 넣어서 바꾸고싶습니다.
소스코드는 아래와 같습니다.
https://sir.kr/g5_tip/5803#c_15171
그리고 특정 게시판만 불어오는 최신글 소스도 찾았는데
https://sir.kr/g5_tip/4103 와 같습니다.
어떻게 합치면 될것 같은데 잘안되서 문의드립니다.
<?php
if (!defined('_GNUBOARD_')) exit;
function popular_bbs_compare($a, $b)
{
return $b['wr_hit'] - $a['wr_hit'];
}
function popular_bbs($skin_dir = '', $gr_id, $rows = 10, $subject_len = 40, $days = 7, $cache_time = 5)
{
global $g5;
if (!$skin_dir) $skin_dir = 'basic';
if (preg_match('#^theme/(.+)$#', $skin_dir, $match)) {
if (G5_IS_MOBILE) {
$popular_bbs_skin_path = G5_THEME_MOBILE_PATH . '/' . G5_SKIN_DIR . '/popular_bbs/' . $match[1];
if (!is_dir($popular_bbs_skin_path))
$popular_bbs_skin_path = G5_THEME_PATH . '/' . G5_SKIN_DIR . '/popular_bbs/' . $match[1];
$popular_bbs_skin_url = str_replace(G5_PATH, G5_URL, $popular_bbs_skin_path);
} else {
$popular_bbs_skin_path = G5_THEME_PATH . '/' . G5_SKIN_DIR . '/popular_bbs/' . $match[1];
$popular_bbs_skin_url = str_replace(G5_PATH, G5_URL, $popular_bbs_skin_path);
}
$skin_dir = $match[1];
} else {
if (G5_IS_MOBILE) {
$popular_bbs_skin_path = G5_MOBILE_PATH . '/' . G5_SKIN_DIR . '/popular_bbs/' . $skin_dir;
$popular_bbs_skin_url = G5_MOBILE_URL . '/' . G5_SKIN_DIR . '/popular_bbs/' . $skin_dir;
} else {
$popular_bbs_skin_path = G5_SKIN_PATH . '/popular_bbs/' . $skin_dir;
$popular_bbs_skin_url = G5_SKIN_URL . '/popular_bbs/' . $skin_dir;
}
}
$cache_fwrite = false;
if(G5_USE_CACHE) {
$cache_file = G5_DATA_PATH."/cache/popular_bbs-{$gr_id}-{$skin_dir}-{$rows}-{$subject_len}.php";
if(!file_exists($cache_file)) {
$cache_fwrite = true;
} else {
if($cache_time > 0) {
$filetime = filemtime($cache_file);
if($filetime && $filetime < (G5_SERVER_TIME - 3600 * $cache_time)) {
@unlink($cache_file);
$cache_fwrite = true;
}
}
if(!$cache_fwrite)
include($cache_file);
}
}
if (!G5_USE_CACHE || $cache_fwrite) {
$list = array();
$nowYmd = date(Ymd, G5_SERVER_TIME);
$startYmd = date('Ymd', strtotime('-'.$days." day", G5_SERVER_TIME));
$sql = " select bo_table, bo_subject from {$g5['board_table']} where gr_id = '{$gr_id}' ";
$board_list = sql_query($sql);
for ($i = 0; $board = sql_fetch_array($board_list); $i++) {
$tmp_write_table = $g5['write_prefix'] . $board['bo_table'];
$sql = " select * from {$tmp_write_table} WHERE date_format(wr_datetime, '%Y%m%d') between '{$startYmd}' and '{$nowYmd}' order by wr_hit desc limit 0, {$rows}";
$result = sql_query($sql);
for ($i = 0; $row = sql_fetch_array($result); $i++) {
$tmp_list = get_list($row, $board, $popular_bbs_skin_url, $subject_len);
$tmp_list['bo_table'] = $board['bo_table'];
$tmp_list['bo_subject'] = $board['bo_subject'];
array_push($list, $tmp_list);
}
}
usort($list, 'popular_bbs_compare');
$list = array_slice($list, 0, $rows);
if($cache_fwrite) {
$handle = fopen($cache_file, 'w');
$cache_content = "<?php\nif (!defined('_GNUBOARD_')) exit;\n\$list=".var_export($list, true)."?>";
fwrite($handle, $cache_content);
fclose($handle);
}
}
ob_start();
include $popular_bbs_skin_path . '/latest.skin.php';
$content = ob_get_contents();
ob_end_clean();
return $content;
}
답변 1
가장 손쉬운 방법은 해당하는 게시판만 그룹을 별도로 하나더 만들면 됩니다
그룹을 만들지 않고하려면 다음처럼
$sql = " select bo_table, bo_subject from {$g5['board_table']} where gr_id = '{$gr_id}' ";
$board_list = sql_query($sql);
for ($i = 0; $board = sql_fetch_array($board_list); $i++) {
$tmp_write_table = $g5['write_prefix'] . $board['bo_table'];
-------------- 위 코드 삭제후 변경
$bo_table= explode(',', $gr_id)
foreach($bo_table as $table){
$tmp_write_table = $g5['write_prefix'] . $table;
---------------- 호출
popular_bbs(스킨, 'free,qna,guestbook, news' ~~~~);
!-->
답변을 작성하시기 전에 로그인 해주세요.