리스트(목록)에서 게시글 순서 변경 > 그누보드5 팁자료실

그누보드5 팁자료실

리스트(목록)에서 게시글 순서 변경 정보

리스트(목록)에서 게시글 순서 변경

첨부파일

list.skin.php (14.7K) 8회 다운로드 2024-04-29 21:37:27
ajax.num_change.php (1.5K) 2회 다운로드 2024-04-29 21:58:45

본문

3718832779_1714394244.14.png

※ 불량학생님의 팁글을 참고하였습니다.

https://sir.kr/g5_tip/8789

 

해당 팁글을 참고하여 제 스타일로 새로이 작성하였습니다.

관리자 로그인 상태에서 게시글 순서 변경 작업이 가능합니다.

 

아직 충분한 테스트/검증이 되지는 않았습니다.

(만약을 위해 작업 전 해당 게시판 DB 백업 후 진행을 권장합니다.)

 

오류/보완사항 등이 있다면 댓글로 얘기해 주시면 됩니다.

 

1. [스킨 디렉토리]/list.skin.php 파일에 다음 코드 추가

1) 제목 출력 부분에 다음코드 추가


<?php if ($is_admin && !$list[$i]['is_notice'] && !$list[$i]['wr_reply']) { ?>                                            
    <input type="text" name="wr_num" size="6" maxlength="10" value="<?php echo $list[$i]['wr_num'] * -1 ?>" data-org="<?php echo $list[$i]['wr_num'] * -1 ?>">
    <button type="button" class="btn_go">Go</button>                                            
<?php } ?>

 

2) 자바 스크립트 부분 하단에 다음 코드 추가


$('input[name="wr_num"]').on('focus', function() {
    $(this).select();
});
$('.btn_go').on('click', function() {
    let p_bo_table = '<?php echo $bo_table ?>';
    let p_wr_num_org = Number($(this).prev().data('org'));
    let p_wr_num = Number($(this).prev().val());
    if (isNaN(p_wr_num)) {
        alert('숫자만 입력해 주세요.');
        return false;
    }
    if (p_wr_num_org == p_wr_num) {
        return false;
    }
    if (p_wr_num < 1) {
        alert('0 보다 큰 숫자를 입력해 주세요.');
        return false;
    }
    if (!confirm(p_wr_num + '번 게시글 다음 순서로 이동시키겠습니까?'))
        return false;
    $.ajax({
        url: '<?php echo $board_skin_url ?>/ajax.num_change.php',
        type: 'POST',
        context: this,
        data: {bo_table : p_bo_table, wr_num_org : p_wr_num_org, wr_num : p_wr_num},
        success: function(data) {            
            if (data == 'OK') {
                location.reload();
            } else if (data == 'Error3') {
                alert('없는 게시글 번호 입니다.');
                $(this).prev().val(p_wr_num_org);
            } else  {
                alert(data);
            }
        }
    });
});

 

2. [스킨 디렉토리]/ajax.num_change.php 파일 생성


<?php
$path = '';
for ($i = 0; $i < 7; $i++) {
    if (file_exists($path . 'common.php'))
        break;
    if (realpath($path) == '/')
        break;
    $path .= '../';
}
include_once($path . 'common.php');
if (!$bo_table || !$wr_num_org || !$wr_num)
    die('Error1');
if ($wr_num_org == $wr_num)
    die('Error2');
$write_table = $g5['write_prefix'] . $bo_table;
$wr_num = $wr_num * -1;
$wr_num_org = $wr_num_org * -1;
// 1) 이동 '고유번호(wr_num)' 존재 여부 체크
$sql = "select count(*) as cnt from {$write_table} where wr_num = '{$wr_num}' and wr_is_comment = 0";
$row = sql_fetch($sql);
if ($row['cnt'] == 0)
    die('Error3');
// 2) 원 게시글의 고유번호를 (임시) '0' 으로 업데이트
$sql = "update {$write_table} set wr_num = '0' where wr_num = '{$wr_num_org}'";
$result_1 = sql_query($sql);
// 3) 관련 이동 대상 게시글들 고유번호 업데이트
if ($wr_num > $wr_num_org) {
    $sql = "update {$write_table} set wr_num = wr_num - 1 where wr_num <= '{$wr_num}' and wr_num > '{$wr_num_org}'";
} else if ($wr_num < $wr_num_org) {
    $sql = "update {$write_table} set wr_num = wr_num + 1 where wr_num > '{$wr_num}' and wr_num < '{$wr_num_org}'";
}
$result_2 = sql_query($sql);
// 4) (임시) '0' 게시글 고유번호를 새 위치 고유번호로 업데이트
if ($wr_num < $wr_num_org)
    $wr_num = $wr_num + 1;
$sql = "update {$write_table} set wr_num = '{$wr_num}' where wr_num = '0'";
$result_3 = sql_query($sql);
$r = $result_1 * $result_2 * $result_3;
if ($r)
    echo 'OK';
else
    echo 'Error';
추천
4

댓글 3개

오... 글 순서를 바꿔야하는 경우가 있어서 관리자만 볼 수 있는 게시판 만들어두고 거기에 이동시켰다가 운영중인 게시판에 원하는 순서대로 다시 이동시키곤 했었는데, 그럴 필요가 없어지겠네요!!

 

공유 감사드립니다!

전체 2,447 |RSS
그누보드5 팁자료실 내용 검색

회원로그인

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