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

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

QA

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

답변 1

본문

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

원하는 것은,

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

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

 

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
  • 질문이 없습니다.
전체 0
© SIRSOFT
현재 페이지 제일 처음으로