BOARD

팁·활용

그누보드5 관리자 권한 게시물 순서 변경 기능 구현 방법

페이지 정보

profile_image
작성자 최고관리자
댓글 0건 조회 0회 작성일 26-11-01 15:00

본문

그누보드5 관리자 권한 게시물 순서 변경 기능 구현 방법

그누보드5 게시판에서 기본 제공하지 않는 관리자용 게시물 순서(wr_num) 변경 기능을 스킨 커스텀을 통해 적용하고 정상 동작을 확인하는 방법을 알아봅니다.

그누보드5 게시판 스킨 _common.php 파일 생성 및 경로 설정 방법

그누보드5 게시판 스킨 폴더 내에서 데이터베이스 연결 및 코어 함수를 정상적으로 불러오기 위해서는 _common.php 파일이 필요합니다.

1. 파일 생성 위치

  • 경로: 그누보드5 / skin / board / [사용 중인 스킨 폴더] /
  • 해당 스킨 폴더 안에 _common.php 파일이 없다면 직접 생성해야 합니다.

2. 코드 작성 및 경로 설정

사용 중인 게시판 스킨 폴더의 깊이(디렉토리 구조)에 따라 common.php 파일까지의 상대 경로를 정확히 지정해야 합니다. 경로가 일치하지 않으면 404 Not Found 에러가 발생할 수 있습니다.

  • 일반적인 스킨 폴더 위치에서 불러올 때:
<?php
include_once('../../../common.php');
?>
  • 테마 폴더 내 스킨 폴더를 이용할 때:
<?php
include_once('../../../../../common.php');
?>

3. 주의사항

사용 중인 게시판 스킨의 실제 디렉토리 깊이에 맞춰 상위 폴더로 이동하는 단계(../)를 확인하고 설정해야 합니다.

list.skin.php와 view.skin.php 코드 추가 방법

그누보드5 게시판에서 관리자 권한으로 게시물 순서를 변경하기 위해 각 스킨 파일에 추가해야 하는 코드는 다음과 같습니다.

1. list.skin.php 파일

목록에 보여지는 글 번호를 기준으로 이동 위치를 선택할 수 있도록, 갤러리 등의 게시판 목록에서 글 번호가 노출되도록 적당한 위치에 아래 코드를 추가합니다.

<?php if($is_admin) { echo $list[$i]['num'].".&nbsp;"; }?>

2. view.skin.php 파일

상세보기 화면의 적당한 위치에 관리자 권한으로 순서 변경 입력 폼을 노출하기 위해 아래 코드를 추가합니다.

<?php if($is_admin) {?>
<form name="update_date" action="<?php echo $board_skin_url;?>/update_num.php" method="post" style="padding:0; margin:0;">
<input type="hidden" name="bo_table" value="<?php echo $bo_table;?>">
<input type="hidden" name="page" value="<?php echo $page;?>">
<input type="hidden" name="wr_id" value="<?php echo $wr_id;?>">
<div class="tbl_frm01 tbl_wrap">
<table>
<tbody>
<tr>
<th>글 순서변경</th>
<td>목록에서 이동하고자 하는 위치의 번호 <input type="text" name="insert_num" style="width:30px;"> 게시글의 뒤로 <input type="submit" value="이동" class="btn_list">합니다.</td>
</tr>
</tbody>
</table>
</div>
</form>
<?php }?>

updatenum.php 파일에서 wrnum 값을 재조정하는 쿼리 구현 방법

최고관리자 권한(if($is_admin == 'super'))으로 동작하는 update_num.php 파일에서는 입력받은 목표 번호(insert_num)를 바탕으로 wr_num 값을 계산하고 데이터베이스 쿼리를 실행하여 순서를 업데이트합니다.

1. 대상 테이블 및 목표 번호 계산

  • 게시판 테이블 명을 정의하고, 입력된 insert_num이 존재하며 0보다 클 경우 값을 1 감소시킵니다.
$write_table = $g5['write_prefix'].$_POST['bo_table'];
if($insert_num && $_POST['insert_num'] > 0) {
 $insert_num--;
 $row2 = sql_fetch(" select wr_num from ".$write_table." where wr_is_comment = 0 order by wr_num DESC limit ".$insert_num.", 1 ");
 $move_wr_num = $row2['wr_num'];
}

2. 기준 pre_wr_num 값 설정

  • 새글 작성($w == '')인지 수정 상태인지에 따라 기존 wr_num 값을 가져옵니다.
if($w == '') {
 $pre_wr_num = $wr_num;
} else {
 $row3 = sql_fetch(" select wr_num from ".$write_table." where wr_id= '".$wr_id."' ");
 $pre_wr_num = $row3['wr_num'];
}

3. 순서 재조정 및 업데이트 쿼리 실행

  • 이동 대상 게시글의 wr_num을 대입한 뒤 지정 번호 이후의 값들을 갱신하고, 최종적으로 이동 대상의 wr_num을 교체합니다.
if( $move_wr_num ) {
 $ori_wr_num = $move_wr_num;
 sql_query("update ".$write_table." set wr_num = wr_num - 1 where wr_num<= ".$move_wr_num." " );
} else {
 $move_wr_num = get_next_num($write_table);
}
$ori_wr_num = $move_wr_num;

if($move_wr_num > $pre_wr_num) $pre_wr_num--;
sql_query("update ".$write_table." set wr_num = ".$move_wr_num." where wr_num= '".$pre_wr_num."' " );

// 이동 대상 wr_num 교체
sql_query("update ".$write_table." set wr_num = '".$ori_wr_num."' where wr_id= ".$_POST['wr_id']." " );

게시물 순서 변경 기능 구현 방법

그누보드5 게시판에서 관리자 권한으로 특정 게시물의 순서(wr_num)를 원하는 위치로 변경하기 위해 스킨 파일 및 처리 파일을 구성하는 방법입니다.

1. _common.php 파일 생성

그누보드5 게시판 스킨 폴더(skin/board/폴더/) 내에 _common.php 파일이 없다면 생성합니다. 테마 폴더나 스킨 폴더의 경로 깊이에 맞추어 common.php 파일을 불러오도록 설정합니다.

<?php
include_once('../../../common.php');
// 테마 폴더 또는 스킨 폴더를 이용할 때 아래 경로를 사용합니다.
//include_once('../../../../../common.php');
?>

2. list.skin.php 파일 수정

목록에 보여지는 글 번호를 기준으로 이동 위치를 선택할 수 있도록 갤러리 등의 스킨 목록 영역에 글 번호 노출 코드를 추가합니다.

<?php if($is_admin) { echo $list[$i]['num'].".&nbsp;"; }?>

3. view.skin.php 파일 수정

관리자($is_admin) 권한일 때만 노출되도록 내용 영역에 순서 변경 입력 폼을 추가합니다. action 속성은 $board_skin_url/update_num.php로 지정합니다.

<?php if($is_admin) {?>
<form name="update_date" action="<?php echo $board_skin_url;?>/update_num.php" method="post" style="padding:0; margin:0;">
<input type="hidden" name="bo_table" value="<?php echo $bo_table;?>">
<input type="hidden" name="page" value="<?php echo $page;?>">
<input type="hidden" name="wr_id" value="<?php echo $wr_id;?>">
<div class="tbl_frm01 tbl_wrap">
<table>
<tbody>
<tr>
<th>글 순서변경</th>
<td>목록에서 이동하고자 하는 위치의 번호 <input type="text" name="insert_num" style="width:30px;"> 게시글의 뒤로 <input type="submit" value="이동" class="btn_list">합니다.</td>
</tr>
</tbody>
</table>
</div>
</form>
<?php }?>

4. update_num.php 파일 생성

스킨 폴더 내에 update_num.php 파일을 생성하여 최고관리자($is_admin == 'super') 권한 체크 및 wr_num 값을 재조정하는 쿼리를 구현합니다.

<?php
include_once "_common.php";
if($is_admin == 'super') {
 $write_table = $g5['write_prefix'].$_POST['bo_table'];
 if($insert_num && $_POST['insert_num'] > 0) {
 $insert_num--;
 $row2 = sql_fetch(" select wr_num from ".$write_table." where wr_is_comment = 0 order by wr_num DESC limit ".$insert_num.", 1 ");
 $move_wr_num = $row2['wr_num'];
 if($w =='') {
 $pre_wr_num = $wr_num;
 } else {
 $row3 = sql_fetch(" select wr_num from ".$write_table." where wr_id= '".$wr_id."' ");
 $pre_wr_num = $row3['wr_num'];
 }
 if( $move_wr_num ) {
 $ori_wr_num = $move_wr_num;
 sql_query("update ".$write_table." set wr_num = wr_num - 1 where wr_num<= ".$move_wr_num." " );
 } else {
 $move_wr_num = get_next_num($write_table);
 }
 $ori_wr_num = $move_wr_num;
 if($move_wr_num > $pre_wr_num) $pre_wr_num--;
 sql_query("update ".$write_table." set wr_num = ".$move_wr_num." where wr_num= '".$pre_wr_num."' " );
 sql_query("update ".$write_table." set wr_num = '".$ori_wr_num."' where wr_id= ".$_POST['wr_id']." " );
 }
}
?>
<script>
location.href="<?php echo G5_BBS_URL."/board.php?bo_table=".$_POST['bo_table']."&page=".$_POST['page'];?>";
</script>

주의사항 및 예외

  • 사용 중인 게시판 스킨 구조나 폴더 깊이에 따라 _common.php 파일 내 include_once 경로 설정에 차이가 있을 수 있으며, 잘못 설정할 경우 404 Not Found 에러가 발생할 수 있으므로 설치 환경에 맞춰 상대 경로를 정확히 수정해야 합니다.
  • 만약을 대비해 작업 전 해당 게시판 데이터베이스(DB) 백업 후 진행을 권장합니다.

그누보드5 게시물 순서 변경 구현 가이드

  • 내 상황: 관리자 권한으로 특정 게시물의 순서(wr_num)를 원하는 위치로 직접 이동시키고 싶을 때
  • 선택 기준: 게시판 스킨 폴더 내 _common.php 생성 및 view.skin.php 내 순서 변경 폼 추가 방식
  • 다음 행동:
    1. 환경 설정: 스킨 폴더 내 _common.php를 생성하고 설치 경로에 맞춰 common.php 상대 경로를 지정합니다.
    2. 목록 수정: list.skin.php에 관리자용 글 번호 출력 코드를 추가하여 이동 목표 번호를 확인합니다.
    3. 폼 추가: view.skin.php에 목표 번호를 입력받아 update_num.php로 전송하는 폼을 배치합니다.
    4. 로직 구현: update_num.php를 생성하여 wr_num 재조정 쿼리를 실행합니다.

실전 FAQ

Q. 순서 변경 실행 시 404 에러가 발생합니다.

  • 원인: _common.php 내 include_once 경로가 스킨 폴더의 실제 깊이와 맞지 않을 때 발생합니다.
  • 대안: 스킨 폴더 위치에 따라 ../../../common.php 또는 테마 폴더 구조에 맞는 상대 경로를 정확히 수정하십시오.

Q. 리스트에서 체크박스로 순서를 변경할 수 없나요?

  • 예외: 목록의 기존 폼과 충돌하여 자바스크립트 오류가 발생할 가능성이 높습니다.
  • 대안: 원문 방식대로 상세 보기(view.skin.php) 화면에서 처리하는 것이 구조적으로 가장 명확합니다.

함께 보면 좋은 글

참고자료

기타 참고자료

댓글목록

등록된 댓글이 없습니다.