최근게시물 하단에 목록페이징을 넣을 수 있을까요?
본문
글쓰기 페이지 하단에 목록을 넣어달라는 의뢰가 들어와서 최근게시물을 넣었더니 적용이 되네요
그런데 글쓰기 페이지에 하단에 넣은 최근게시물 아래에 목록페이지처럼 페이징을 넣어달라고 하는데요
잘 안됩니다....
방법이 있을까요?
메인페이지의 최근게시물에 페이징을 넣는다는 개념과 동일할거 같은데요...
음...
답변 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); ?>
답변을 작성하시기 전에 로그인 해주세요.