그룹내 특정 분류 최근글을 메인화면에 최근게시물로 추출 방법 질문이요..
본문
그룹내의 모든 게시판에서 동일한 분류를 사용하고
(board(그룹명)에 속해있는 10개의 게시판 분류는 신상,구제,재고 모두 동일
현재 그룹에 속해 있는 최근게시물은 추출은 되고 있는데
분류를 나눌 예정이라서
그룹내 신상 분류에 업로드되는 게시물의 최근글을 메인화면에 최근게시물로 추출이 가능할까요?
<?=latest_group("theme/gr_product”,”board”,10,20); //그룹 최근글 latest_group('스킨','그룹id','글수','제목 글자 수')?> =그룹내 게시물중 최근글 추출
<?=latest_group("theme/gr_product”,”board”,10,20); //그룹 최근글 latest_group('스킨','그룹id','분류','글수','제목 글자 수')?>-이렇게 응용은 안될까요?
현재 사용중인 latest.lib.php
<?php
if (!defined('_GNUBOARD_')) exit;
// 최신글 추출
// $cache_time 캐시 갱신시간
function latest($skin_dir='', $bo_table, $rows=10, $subject_len=40, $cache_time=1, $options='')
{
global $g5;
if (!$skin_dir) $skin_dir = 'basic';
if(preg_match('#^theme/(.+)$#', $skin_dir, $match)) {
if (G5_IS_MOBILE) {
$latest_skin_path = G5_THEME_MOBILE_PATH.'/'.G5_SKIN_DIR.'/latest/'.$match[1];
if(!is_dir($latest_skin_path))
$latest_skin_path = G5_THEME_PATH.'/'.G5_SKIN_DIR.'/latest/'.$match[1];
$latest_skin_url = str_replace(G5_PATH, G5_URL, $latest_skin_path);
} else {
$latest_skin_path = G5_THEME_PATH.'/'.G5_SKIN_DIR.'/latest/'.$match[1];
$latest_skin_url = str_replace(G5_PATH, G5_URL, $latest_skin_path);
}
$skin_dir = $match[1];
} else {
if(G5_IS_MOBILE) {
$latest_skin_path = G5_MOBILE_PATH.'/'.G5_SKIN_DIR.'/latest/'.$skin_dir;
$latest_skin_url = G5_MOBILE_URL.'/'.G5_SKIN_DIR.'/latest/'.$skin_dir;
} else {
$latest_skin_path = G5_SKIN_PATH.'/latest/'.$skin_dir;
$latest_skin_url = G5_SKIN_URL.'/latest/'.$skin_dir;
}
}
$cache_fwrite = false;
if(G5_USE_CACHE) {
$cache_file = G5_DATA_PATH."/cache/latest-{$bo_table}-{$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();
$sql = " select * from {$g5['board_table']} where bo_table = '{$bo_table}' ";
$board = sql_fetch($sql);
$bo_subject = get_text($board['bo_subject']);
$tmp_write_table = $g5['write_prefix'] . $bo_table; // 게시판 테이블 전체이름
/*$sql = " select * from {$tmp_write_table} where wr_is_comment = 0 order by wr_num limit 0, {$rows} ";*/
/*$sql = " select * from {$tmp_write_table} where wr_is_comment = 0".$where." order by wr_num limit 0, {$rows} ";*/
/*$sql = " select * from {$tmp_write_table} where ca_name='{$ca_name}' AND wr_is_comment = 0 order by wr_num limit 0, {$rows} ";*/
$sql = " select * from {$tmp_write_table} where wr_is_comment = 0".$where." order by wr_num limit 0, {$rows} ";
$result = sql_query($sql);
for ($i=0; $row = sql_fetch_array($result); $i++) {
$list[$i] = get_list($row, $board, $latest_skin_url, $subject_len);
}
if($cache_fwrite) {
$handle = fopen($cache_file, 'w');
$cache_content = "<?php\nif (!defined('_GNUBOARD_')) exit;\n\$bo_subject='".sql_escape_string($bo_subject)."';\n\$list=".var_export($list, true)."?>";
fwrite($handle, $cache_content);
fclose($handle);
}
}
ob_start();
include $latest_skin_path.'/latest.skin.php';
$content = ob_get_contents();
ob_end_clean();
return $content;
}
function latest_group($skin_dir="", $gr_id, $rows=10, $subject_len=40, $contents_len=200, $options="", $category="", $orderby="") {
global $config;
global $g5;
list($bo_table, $category) = explode("|", $bo_table);
if($category) $where = " AND ca_name = '".$category."' ";
$list = array();
$limitrows = $rows;
$sql_groupname = " select gr_subject from ".$g5['group_table']." where gr_id='".$gr_id."' ";
$rowgroup = sql_fetch_array(sql_query($sql_groupname));
$gr_subject = $rowgroup['gr_subject'];
$sqlgroup = " select bo_table, bo_subject from ".$g5['board_table']." where gr_id='".$gr_id."' and bo_use_search=1 order by bo_order";
$rsgroup = sql_query($sqlgroup);
if (!$skin_dir) $skin_dir = 'basic';
if(preg_match('#^theme/(.+)$#', $skin_dir, $match)) {
if (G5_IS_MOBILE) {
$latest_skin_path = G5_THEME_MOBILE_PATH.'/'.G5_SKIN_DIR.'/latest/'.$match[1];
if(!is_dir($latest_skin_path))
$latest_skin_path = G5_THEME_PATH.'/'.G5_SKIN_DIR.'/latest/'.$match[1];
$latest_skin_url = str_replace(G5_PATH, G5_URL, $latest_skin_path);
} else {
$latest_skin_path = G5_THEME_PATH.'/'.G5_SKIN_DIR.'/latest/'.$match[1];
$latest_skin_url = str_replace(G5_PATH, G5_URL, $latest_skin_path);
}
$skin_dir = $match[1];
} else {
if(G5_IS_MOBILE) {
$latest_skin_path = G5_MOBILE_PATH.'/'.G5_SKIN_DIR.'/latest/'.$skin_dir;
$latest_skin_url = G5_MOBILE_URL.'/'.G5_SKIN_DIR.'/latest/'.$skin_dir;
} else {
$latest_skin_path = G5_SKIN_PATH.'/latest/'.$skin_dir;
$latest_skin_url = G5_SKIN_URL.'/latest/'.$skin_dir;
}
}
for ($j=0, $k=0; $rowgroup = sql_fetch_array($rsgroup); $j++) {
$bo_table = $rowgroup['bo_table'];
// 테이블 이름구함
$sql = " select * from ".$g5['board_table']." where bo_table='".$bo_table."'";
$board = sql_fetch($sql);
$tmp_write_table = $g5['write_prefix'] . $bo_table; // 게시판 테이블 실제이름
// 옵션에 따라 정렬
$sql = "select * from ".$tmp_write_table." where wr_is_comment = 0 ";
$sql .= (!$category) ? "" : " and ca_name = '".$category."' ";
$sql .= (!$orderby) ? " order by wr_datetime desc " : " order by ".$orderby." desc, wr_datetime 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'];
$op_list[$k] .= $row['wr_name'];
}
$list[$k] = get_list($row, $board, $latest_skin_path, $subject_len, $wr_name, $wr_10);
$list[$k]['bo_table'] = $board['bo_table'];
$list[$k]['bo_subject'] = $board['bo_subject'];
$list[$k]['wr_name'] = $board['wr_name'];
$list[$k]['bo_wr_subject'] = cut_str($board['bo_subject'] . $list[$k]['wr_subject'], $subject_len, $wr_name, $wr_10);
}
}
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;
}
?>