그누보드 게시판 본문 하단에 이전글 다음글 제목 및 날짜 출력하기
페이지 정보

본문
그누보드 글 보기 페이지(view.skin.php)와 코어 파일(bbs/view.php)을 수정하여 게시판 하단에 이전글 및 다음글의 제목뿐만 아니라 작성일시까지 함께 출력하는 방법을 안내합니다.
그누보드 게시판 본문 하단에 이전글·다음글 제목 및 링크 출력 방법
그누보드 게시판 글 보기 페이지(view.skin.php) 하단에 이전글과 다음글의 제목 및 링크를 출력하려면 $prev_wr_subject, $next_wr_subject, $prev_href, $next_href 변수를 사용합니다.
1. view.skin.php 파일 수정
게시판 스킨 폴더 내의 view.skin.php 파일에서 원하는 위치에 아래 코드를 추가합니다.
<?php if ($prev_href) {?>
이전글: <a href="<?php echo $prev_href?>"><?php echo $prev_wr_subject;?></a>
<?php }?>
<?php if ($next_href) {?>
다음글: <a href="<?php echo $next_href?>"><?php echo $next_wr_subject;?></a>
<?php }?>
조건 및 주의사항
- 첫 번째 게시물은 이전글이 없고, 마지막 게시물은 다음글이 없습니다.
- 따라서 위 코드처럼 조건문(
if ($prev_href),if ($next_href))으로 감싸주어야 이전글과 다음글이 존재할 때만 정상적으로 출력되며 오류를 방지할 수 있습니다.
bbs/view.php 쿼리문 수정 방법
그누보드 게시판 상세 페이지에서 이전글과 다음글의 작성일시 정보까지 함께 출력하려면 bbs/view.php 파일 내의 이전글 및 다음글 조회 쿼리문에 wr_datetime 필드를 추가해야 합니다.
1. 윗글(이전글) 쿼리 수정
bbs/view.php 파일에서 윗글을 얻는 코드를 찾아 wr_datetime을 추가합니다.
// 윗글을 얻음
$sql = " select wr_id, wr_subject, wr_datetime from {$write_table} where wr_is_comment = 0 and wr_num = '{$write['wr_num']}' and wr_reply < '{$write['wr_reply']}' {$sql_search} order by wr_num desc, wr_reply desc limit 1 ";
$prev = sql_fetch($sql);
// 위의 쿼리문으로 값을 얻지 못했다면
if (!$prev['wr_id']) {
$sql = " select wr_id, wr_subject, wr_datetime from {$write_table} where wr_is_comment = 0 and wr_num < '{$write['wr_num']}' {$sql_search} order by wr_num desc, wr_reply desc limit 1 ";
$prev = sql_fetch($sql);
}
2. 아래글(다음글) 쿼리 수정
바로 밑에 있는 아래글을 얻는 부분에도 동일하게 wr_datetime 필드를 추가합니다. 필드 추가 시 쉼표(,) 구바에 주의합니다.
// 아래글을 얻음
$sql = " select wr_id, wr_subject, wr_datetime from {$write_table} where wr_is_comment = 0 and wr_num = '{$write['wr_num']}' and wr_reply > '{$write['wr_reply']}' {$sql_search} order by wr_num, wr_reply limit 1 ";
$next = sql_fetch($sql);
// 위의 쿼리문으로 값을 얻지 못했다면
if (!$next['wr_id']) {
$sql = " select wr_id, wr_subject, wr_datetime from {$write_table} where wr_is_comment = 0 and wr_num > '{$write['wr_num']}' {$sql_search} order by wr_num, wr_reply limit 1 ";
$next = sql_fetch($sql);
}
그누보드 게시판 이전글·다음글 제목 및 날짜 출력 방법
그누보드 글 보기 페이지(view.skin.php) 하단에 이전글과 다음글의 제목, 링크, 작성일시를 출력하려면 코어 파일(bbs/view.php)의 쿼리문을 수정하여 날짜 데이터를 가져온 뒤, 스킨 파일에 출력 코드를 추가해야 합니다.
1. bbs/view.php 파일 수정 (날짜 데이터 추가)
이전글과 다음글의 작성일시(wr_datetime) 정보를 가져오도록 쿼리문을 수정합니다. bbs/view.php 파일에서 윗글과 아래글을 가져오는 SQL 문에 wr_datetime 필드를 추가합니다.
// 윗글을 얻음
$sql = " select wr_id, wr_subject, wr_datetime from {$write_table} where wr_is_comment = 0 and wr_num = '{$write['wr_num']}' and wr_reply < '{$write['wr_reply']}' {$sql_search} order by wr_num desc, wr_reply desc limit 1 ";
$prev = sql_fetch($sql);
// 위의 쿼리문으로 값을 얻지 못했다면
if (!$prev['wr_id']) {
$sql = " select wr_id, wr_subject, wr_datetime from {$write_table} where wr_is_comment = 0 and wr_num < '{$write['wr_num']}' {$sql_search} order by wr_num desc, wr_reply desc limit 1 ";
$prev = sql_fetch($sql);
}
// 아래글을 얻음
$sql = " select wr_id, wr_subject, wr_datetime from {$write_table} where wr_is_comment = 0 and wr_num = '{$write['wr_num']}' and wr_reply > '{$write['wr_reply']}' {$sql_search} order by wr_num, wr_reply limit 1 ";
$next = sql_fetch($sql);
// 위의 쿼리문으로 값을 얻지 못했다면
if (!$next['wr_id']) {
$sql = " select wr_id, wr_subject, wr_datetime from {$write_table} where wr_is_comment = 0 and wr_num > '{$write['wr_num']}' {$sql_search} order by wr_num, wr_reply limit 1 ";
$next = sql_fetch($sql);
}
2. view.skin.php 파일 수정 (제목 및 링크 출력)
게시판 스킨의 view.skin.php 파일에서 이전글과 다음글을 출력할 위치에 아래 코드를 추가합니다. 첫 번째 게시물은 이전글이 없고 마지막 게시물은 다음글이 없으므로, 데이터가 존재할 때만 출력되도록 조건문(if)으로 감싸줍니다.
<?php if ($prev_href) {?>
이전글: <a href="<?php echo $prev_href?>"><?php echo $prev_wr_subject;?></a>
<?php }?>
<?php if ($next_href) {?>
다음글: <a href="<?php echo $next_href?>"><?php echo $next_wr_subject;?></a>
<?php }?>
3. 이전글·다음글 날짜 출력 추가
view.skin.php 파일 내 원하는 위치에 date()와 strtotime() 함수를 사용하여 날짜 형식을 지정해 출력합니다.
이전글 날짜: <?php if ($prev_href) echo date("y-m-d", strtotime($prev['wr_datetime']))?>
다음글 날짜: <?php if ($next_href) echo date("y-m-d", strtotime($next['wr_datetime']))?>
년·월·일을 4자리 연도로 출력하려면 date("Y-m-d",...) 형태로 변경하거나, 시간까지 출력하려면 date("Y-m-d H:i:s",...) 형태로 수정하여 활용할 수 있습니다.
상황별 판단 기준과 다음 행동
| 내 상황 | 우선할 판단 | 다음 행동 |
|---|---|---|
| 게시판 본문 하단에 이전글·다음글의 제목과 링크만 출력하고 싶음 | view.skin.php 파일 내에 $prev_href, $next_href, $prev_wr_subject, $next_wr_subject 변수 존재 여부 확인 | view.skin.php 파일의 원하는 위치에 조건문과 함께 링크 및 제목 출력 코드를 추가 |
| 이전글과 다음글의 제목뿐만 아니라 작성일시(날짜)까지 함께 출력하고 싶음 | 코어 파일인 bbs/view.php에서 날짜 데이터를 가져오는지 확인 | bbs/view.php의 윗글/아래글 조회 쿼리문에 wr_datetime 필드를 추가하고 스킨 파일에 날짜 출력 코드 반영 |
실전 FAQ
Q. 첫 번째 게시물이나 마지막 게시물에서 이전글·다음글 영역에 오류가 발생하지 않게 하려면 어떻게 해야 하나요?
답변: 첫 번째 게시물은 이전글이 없고, 마지막 게시물은 다음글이 존재하지 않습니다. 따라서 if ($prev_href) 및 if ($next_href)와 같은 조건문으로 출력 코드를 감싸주어야 데이터가 있을 때만 안전하게 출력되며 오류를 방지할 수 있습니다.
Q. bbs/view.php 수정 후 날짜를 출력할 때 날짜 형식을 변경하려면 어떻게 하나요?
답변: view.skin.php 파일에서 date("y-m-d", strtotime($prev['wr_datetime'])) 형태의 함수를 사용합니다. 연도를 4자리로 출력하려면 "Y-m-d"로 수정하고, 시간까지 함께 표시하려면 "Y-m-d H:i:s" 형태로 변경하여 활용할 수 있습니다.
참고자료
기타 참고자료
- 이전글그누보드 여분필드를 이용해 특정 게시물만 최신글로 추출하는 방법 26.10.04
- 다음글그누보드 갤러리 게시판 공지사항 썸네일 출력 방법 26.10.04
댓글목록
등록된 댓글이 없습니다.