테스트 사이트 - 개발 중인 베타 버전입니다

그룹 최신글 추출 (2018-12-05 17:05 수정)

그룹별 최신글 사용을 하고자 하는 경우에
환경설정 > 기본환경설정 > 최근게시물 삭제  ...  30일을  300일 정도로 변경합니다.
 
그룹별 최신게시글에서 그룹에 포함된 최신게시글의 추출의 경우에는 g5_board_new 데이타를 기준으로 추출을 하는데, 기본설정 30일이 지난 경우엔 추출될 근거 자료가 사라집니다.

아래의 function 은 g5_board_new 에 저장된 것을 활용하지 않고, 개별 board의 글을 활용하는 방식입니다.

 

 

본 강좌는 단순 추출기능만 포함되어 있습니다.
그룹내 게시글을 union 으로 묶어서 날짜로 정렬하는 상품은
https://sir.kr/cmall/1544195999  에서 구입할 수 있습니다.



1. 변경이력

2016-09-06 12:59
  . 최초 배포

2018-12-05 16:17
  . 아미나빌더 적용된 경우 모바일 화면에서 노출 안되는 오류 수정

2018-12-05 17:05
  . 공지글과 답변글 추출 제외기능 추가 ( 소스에서 제어가능 / 주석 확인 )



2. lib / latest.lib.php 에 아래 내용을 추가합니다.

/* 사용방법:  
<?php
//echo latest_group2("최신글스킨", "그룹이름", 게시물수, 제목글자수, 본문글자수,"옵션","카테고리","정렬방식");
echo latest_group2("basic", "그룹이름", 게시물수, 제목글자수, 본문글자수,"","","");
?>
*/

function latest_group2($skin_dir="", $gr_id, $rows=10, $subject_len=40, $contents_len=200, $options="", $category="", $orderby="") { 
    global $config; 
    global $g5; 
    
    $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 rand()";
    $rsgroup = sql_query($sqlgroup); 
    if (!$skin_dir) $skin_dir = 'basic'; 

    // 아미나빌더인가요?
    $field_query = "SHOW COLUMNS FROM {$g5['config_table']} WHERE `Field` = 'as_thema';";
    $field_row = sql_fetch( $field_query );
    if($field_row['Field']) { // 아미나빌더가 있으면
        $g5_builder = "amina";
    }
    
    if ($g5_builder == "amina") {
            $latest_skin_path = G5_SKIN_PATH.'/latest/'.$skin_dir;
            $latest_skin_url  = G5_SKIN_URL.'/latest/'.$skin_dir;
    } else {
        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; // 게시판 테이블 실제이름
        
        $subqry = "";
        
        // 답변글 출력제외 
        //$subqry = "&& wr_reply = ''";
        
        // 공지사항 출력제외 
        $arr_notice = preg_replace("/\n/",',', trim($board['bo_notice']));
        if($arr_notice) {
            $subqry = $subqry." && wr_id Not in ({$arr_notice}) ";
        }
        
        // 옵션에 따라 정렬
        $sql = "select * from {$tmp_write_table} where wr_is_comment = 0 ";
        $sql .= (!$category) ? "" : " and ca_name = '{$category}' ";
        $sql .= $subqry;
        $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;
}

댓글 작성

댓글을 작성하시려면 로그인이 필요합니다.

로그인하기

댓글 5개

그룹별 최신글 감사합니다
5.4에서 테마 적용 후에도 작용됨

게시글 목록

번호 제목
24149
24140
24133
24125
24119
24109
24105
24101
24093
24089
24077
24074
24071
24070
24067
24056
24050
24046
24043
24040
24037
24036
24035
24034
24021
24017
24005
24002
23990
23980