최근게시물 하단에 목록페이징을 넣을 수 있을까요?

최근게시물 하단에 목록페이징을 넣을 수 있을까요?

QA

최근게시물 하단에 목록페이징을 넣을 수 있을까요?

본문

글쓰기 페이지 하단에 목록을 넣어달라는 의뢰가 들어와서 최근게시물을 넣었더니 적용이 되네요

그런데 글쓰기 페이지에 하단에 넣은 최근게시물 아래에 목록페이지처럼 페이징을 넣어달라고 하는데요

잘 안됩니다....

방법이 있을까요?

메인페이지의 최근게시물에 페이징을 넣는다는 개념과 동일할거 같은데요...

음...

이 질문에 댓글 쓰기 :

답변 1


function latest_with_paging($skin_dir='', $bo_table, $rows=10, $subject_len=40, $lt_page=1, $cache_time=1, $options='') {
    global $g5;
    if (!$skin_dir) $skin_dir = 'basic';
    
    $time_unit = 3600;  // 1시간으로 고정
    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;
        }
    }
    $board = get_board_db($bo_table, true);
    if( ! $board ){
        return '';
    }
    $bo_subject = get_text($board['bo_subject']);
    $tmp_write_table = $g5['write_prefix'] . $bo_table; // 게시판 테이블 전체이름
    // 페이징 처리를 위한 게시물 총 개수 조회
    $sql = "SELECT COUNT(*) AS cnt FROM {$tmp_write_table} WHERE wr_is_comment = 0";
    $total_result = sql_fetch($sql);
    $total_count = $total_result['cnt'];
    // 총 페이지 수 계산
    $total_page  = ceil($total_count / $rows);
    if ($lt_page < 1) $lt_page = 1; 
    $from_record = ($lt_page - 1) * $rows;
    // 특정 페이지의 게시물만을 가져오는 쿼리로 변경
    $sql = "SELECT * FROM {$tmp_write_table} WHERE wr_is_comment = 0 ORDER BY wr_num LIMIT {$from_record}, {$rows}";
    $result = sql_query($sql);
    $list = array();
    for ($i=0; $row = sql_fetch_array($result); $i++) {
        $list[$i] = get_list($row, $board, $latest_skin_url, $subject_len);
    }
    // 페이징 HTML 생성
    $paging_html = '<div class="pg_wrap">';
    for ($p=1; $p<=$total_page; $p++) {
        if ($p == $lt_page) {
            $paging_html .= "<strong class='pg_current'>$p</strong> ";
        } else {
            $paging_html .= "<a class='pg_page' href='?lt_page=$p'>$p</a> ";
        }
    }
    $paging_html .= '</div>';
    ob_start();
    include $latest_skin_path.'/latest.skin.php';
    $content = ob_get_contents();
    ob_end_clean();
    // 최종 출력 전 페이징 HTML 추가
    $content .= $paging_html;
    return $content;
}


latest.lib.php의 최근 게시물 함수 아래에 위 함수를 추가해서 테스트해보세요.
캐싱이나, 이미지처리는 제외하고 페이징을 중점적으로 작성한 코드라 필요한 부분은 직접 추가하셔야합니다.

* 게시판 페이징을 구분하는 $page변수 대신 최근게시물 페이징 변수로 $lt_page를 사용합니다.

최근 게시물 실행 시 코드

<?php echo latest_with_paging('pic_list', 'notice', 4, 23, $lt_page); ?>
답변을 작성하시기 전에 로그인 해주세요.
전체 123,673 | RSS
QA 내용 검색

회원로그인

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