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,594
2621 8개월 전 조회 535
2620 8개월 전 조회 459
2619 8개월 전 조회 516
2618 8개월 전 조회 418
2617 8개월 전 조회 390
2616 8개월 전 조회 545
2615 8개월 전 조회 533
2614 8개월 전 조회 607
2613 8개월 전 조회 752
2612 9개월 전 조회 669
2611 9개월 전 조회 493
2610 9개월 전 조회 804
2609 9개월 전 조회 658
2608 9개월 전 조회 836
2607 9개월 전 조회 1,038
2606 9개월 전 조회 604
2605 9개월 전 조회 725
2604 9개월 전 조회 722
2603 9개월 전 조회 654
2602 9개월 전 조회 636
2601 9개월 전 조회 747
2600 9개월 전 조회 849
2599 9개월 전 조회 750
2598 9개월 전 조회 932
2597 9개월 전 조회 670
2596 9개월 전 조회 810
2595 9개월 전 조회 946
2594 9개월 전 조회 557
2593 10개월 전 조회 689
2592 10개월 전 조회 1,039
🐛 버그신고