2026, 새로운 도약을 시작합니다.

[전체게시판] 일일/주간/월간 인기 게시물

[전체게시판] 일일/주간/월간 인기 게시물 (원본: 미니님a)

// 출력할 게시물 수
$rows = 10;

// 각 기간별 게시물을 가져오는 함수
function get_popular_posts($period, $rows) {
    global $g5;
    
    $today = date('Y-m-d');
    
    switch($period) {
        case 'daily':
            $start_date = date('Y-m-d', strtotime('-3 day'));
            break;
        case 'weekly':
            $start_date = date('Y-m-d', strtotime('-7 days'));
            break;
        case 'monthly':
            $start_date = date('Y-m-d', strtotime('-30 days'));
            break;
        default:
            $start_date = date('Y-m-d', strtotime('-3 day'));
    }
    
    $list = array();
    
    // 모든 게시판 가져오기
    $board_sql = "SELECT bo_table FROM {$g5['board_table']} WHERE bo_use_search = 1";
    $board_result = sql_query($board_sql);
    
    // 모든 게시판의 인기글을 통합하여 가져옴
    $sql = " SELECT 
                a.bo_table,
                a.wr_id,
                a.wr_subject,
                a.wr_comment,
                a.wr_hit,
                a.wr_datetime
            FROM (";
    
    $union_sql = array();
    
    while ($board = sql_fetch_array($board_result)) {
        $bo_table = $board['bo_table'];
        
        // 게시판 테이블이 존재하는지 확인
        $table_exists = sql_query("SHOW TABLES LIKE '{$g5['write_prefix']}{$bo_table}'", false);
        if (sql_num_rows($table_exists) == 0) continue;
        
        $union_sql[] = " SELECT 
                '{$bo_table}' as bo_table,
                wr_id,
                wr_subject,
                wr_comment,
                wr_hit,
                wr_datetime
            FROM {$g5['write_prefix']}{$bo_table}
            WHERE wr_is_comment = 0
                AND wr_datetime BETWEEN '{$start_date} 00:00:00' AND '{$today} 23:59:59'";
    }
    
    // UNION ALL 쿼리 생성
    if (count($union_sql) > 0) {
        $sql .= implode(" UNION ALL ", $union_sql);
        $sql .= ") a ORDER BY a.wr_hit DESC, a.wr_comment DESC LIMIT 0, {$rows} ";
        
        $result = sql_query($sql);
        
        for ($i=0; $row = sql_fetch_array($result); $i++) {
            $list[$i]['bo_table'] = $row['bo_table'];
            $list[$i]['wr_id'] = $row['wr_id'];
            $list[$i]['subject'] = $row['wr_subject'];
            $list[$i]['comment_cnt'] = $row['wr_comment'];
            $list[$i]['hit'] = $row['wr_hit'];
            $list[$i]['datetime'] = $row['wr_datetime'];
            
            // 게시판 제목 가져오기
            $board_info = sql_fetch("SELECT bo_subject FROM {$g5['board_table']} WHERE bo_table = '{$row['bo_table']}'");
            $list[$i]['bo_subject'] = $board_info['bo_subject'];
        }
    }
    
    return $list;
}

첨부파일

index.php (7.1 KB) 10회 2025-05-02 21:41
|

댓글 7개

태글은 아닙니다.
미니님 스킨하고 차이점은 무엇인가요?
아무 설명 없이 함수만 있어서 두 스킨의 차이점이 궁금합니다.

@무와보

안녕하세요. 미나님의 스킨은 일정게시판을 추가하면서 인기게시물을 뽑는 함수인데 

저는 이를 변형해서 모든(개설된 전체)게시판에서 인기게시물로 뽑는 함수로 변경하였습니다.

자세한 설명이 없었네요...

@모아비즈 아~ 이해 했습니다 :)

@무와보 네...감사합니다...^.^~

@DawnDew 감사합니다...~~~!!!

혹시 게시물을 올리고 일정시간이 지나야 위젯에 적용이 되는건가요?

미나님것이나 모아비즈님것도 둘다 게시물올리고 바로 적용이 안되는것 같아서요..

댓글 작성

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

로그인하기

그누보드5 팁자료실

번호 제목 글쓴이 날짜 조회
공지 3년 전 조회 4,598
2741 3일 전 조회 111
2740 4일 전 조회 103
2739 1주 전 조회 209
2738 1주 전 조회 217
2737 1주 전 조회 181
2736 1주 전 조회 280
2735 3주 전 조회 281
2734 3주 전 조회 263
2733 1개월 전 조회 265
2732 1개월 전 조회 301
2731 1개월 전 조회 267
2730 1개월 전 조회 226
2729 1개월 전 조회 355
2728 1개월 전 조회 245
2727 1개월 전 조회 422
2726 1개월 전 조회 256
2725 1개월 전 조회 330
2724 1개월 전 조회 358
2723 1개월 전 조회 267
2722 1개월 전 조회 300
2721 1개월 전 조회 211
2720 2개월 전 조회 304
2719 2개월 전 조회 307
2718 2개월 전 조회 202
2717 2개월 전 조회 336
2716 2개월 전 조회 202
2715 2개월 전 조회 311
2714 2개월 전 조회 273
2713 2개월 전 조회 376
2712 2개월 전 조회 289
🐛 버그신고