그룹최신글 게시판설정에 의해 순서로 출력하는 방법
본문
아래소스는 그누보드 그룹최신글 추출라이브러리입니다.
원하는 것은,
그룹최신글을 추출하면 최신순으로 출력되는데
이것을, 그룹에 속한 게시판의 최신글을 게시판속성(bo_order)에 따라 출력순서를 정할려고 합니다.
bo_order는 숫자로 되어 있으며, 이 숫자를 asc정렬로 우선순으로 출력하고자 합니다.
===========================================================
function latest_group_search($skin_dir="", $gr_id, $rows=10, $subject_len=40, $content_len=40, $order, $thumb_width, $thumb_height)
{
global $g5;
$s = explode(' ', strip_tags($order));
for ($i=0; $i<count($s); $i++) {
$search_str = $s[$i];
if ($i == 0) { $search_or .= " and (INSTR(wr_subject, '$search_str'))"; }
else { $search_or .= " or (INSTR(wr_subject, '$search_str'))"; }
}
$list = array();
$limitrows = $rows;
$sql_gr = " select gr_subject, gr_10 from {$g5['group_table']} where gr_id = '$gr_id' ";
$gr = sql_fetch($sql_gr);
$gr_subject = $gr[gr_subject];
$gr_color = $gr[gr_10];
$sqlgroup = " select bo_table, bo_subject, bo_order from {$g5['board_table']} where gr_id = '$gr_id' and bo_use_search = '1' order by bo_order asc ";
$rsgroup = sql_query($sqlgroup);
if (!$skin_dir) $skin_dir = 'basic';
$latest_skin_path = G5_SKIN_PATH.'/latest/'.$skin_dir;
$latest_skin_url = G5_SKIN_URL.'/latest/'.$skin_dir;
$lib_thumb_width = $thumb_width; // 썸네일 넓이를 정의함
$lib_thumb_height = $thumb_height; // 썸네일 높이를 정의함
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; // 게시판 테이블 전체이름
// 옵션에 따라 정렬
$sql3 = " select * from {$tmp_write_table} where wr_is_comment = 0 $search_or";
$sql3 .= " order by wr_id desc";
$sql3 .= " limit $limitrows";
$result3 = sql_query($sql3);
for ($i=0; $row = sql_fetch_array($result3); $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_order] = $board[bo_order];
$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;
}
답변 1
root/index.php 에 있는 최신글 부분 확인해 보세요.
<h2 class="sound_only">최신글</h2>
<!-- 최신글 시작 { -->
<?php
// 최신글
$sql = " select bo_table
from `{$g5['board_table']}` a left join `{$g5['group_table']}` b on (a.gr_id=b.gr_id)
where a.bo_device <> 'mobile' ";
if(!$is_admin)
$sql .= " and a.bo_use_cert = '' ";
$sql .= " order by b.gr_order, a.bo_order ";
$result = sql_query($sql);
for ($i=0; $row=sql_fetch_array($result); $i++) {
if ($i%2==1) $lt_style = "margin-left:20px";
else $lt_style = "";
?>
<div style="float:left;<?php echo $lt_style ?>">
<?php
// 이 함수가 바로 최신글을 추출하는 역할을 합니다.
// 사용방법 : latest(스킨, 게시판아이디, 출력라인, 글자수);
// 테마의 스킨을 사용하려면 theme/basic 과 같이 지정
echo latest("basic", $row['bo_table'], 5, 25);
?>
</div>
<?php
}
?>
<!-- } 최신글 끝 -->
!-->
답변을 작성하시기 전에 로그인 해주세요.