그룹최신글 게시판설정에 의해 순서로 출력하는 방법

그룹최신글 게시판설정에 의해 순서로 출력하는 방법

QA

그룹최신글 게시판설정에 의해 순서로 출력하는 방법

본문

아래소스는 그누보드 그룹최신글 추출라이브러리입니다.

원하는 것은,

그룹최신글을 추출하면 최신순으로 출력되는데

이것을, 그룹에 속한 게시판의 최신글을 게시판속성(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
}
?>
<!-- } 최신글 끝 -->

 

답변을 작성하시기 전에 로그인 해주세요.
전체 16
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT