게시글 삭제시 섬네일까지 삭제하기 > 그누4 팁자료실

그누4 팁자료실

그누보드4와 관련된 팁을 여러분들과 함께 공유하세요.
나누면 즐거움이 커집니다.

게시글 삭제시 섬네일까지 삭제하기 정보

게시글 삭제시 섬네일까지 삭제하기

본문

팁이랄것까지는 없지만,
그래도 모르시는 분들을 위해서 올려 봅니다..

현재 그누보드4는 게시글을 삭제하면 첨부파일은 삭제가 되는데
섬네일은 삭제가 안되더군요..

섬네일까지 깨끗하게 삭제하는 방법은 의외로 간단합니다..
보통 섬네일이 만들어지는것을 보면 문서아이디로 만들어지더군요..
그 디렉토리를 찾아가서 삭제하도록 만들어 봤습니다.

bbs/delete.php 파일의 75번줄 부근
bbs/delete_all.php 파일의 92번줄 부근
bbs/write_update.php 파일의 155번줄 부근 

                // 파일삭제
            @unlink("$g4[path]/data/file/$bo_table/$row2[bf_file]");

이부분을 찾아서 바로 아래에

            @unlink("$g4[path]/data/file/$bo_table/thumb/$write[wr_id]"); //썸네일 삭제
            @unlink("$g4[path]/data/file/$bo_table/latest_thumb/$write[wr_id]"); //최근게시물 썸네일 삭제

위의 소스 두줄을 추가로 넣어주시면 게시글 삭제시 섬네일까지 깨끗하게 삭제가 됩니다...
첨부이미지 교체시에도 섬네일이 바로 교체 됩니다...
추천
3

댓글 33개

그럼 글삭제시와 글수정에서 파일교체가 아닌

글수정에서 글은 그대로두고 업로드되어있는 이미지파일만 삭제를 하고 글수정완료하구 나오면 썸네일은 안지워지던데 이건 어떻게 하면되나요?
bbs/write_update.php 파일까지 수정하셨다면
글만 수정하고 이미지파일 삭제에 체크하시면 섬네일도 삭제가 됩니다...
단, 섬네일 파일의 폴더명을 다르게 만든 스킨을 사용했을경우는 그에 맞게 위의 소스도


    @unlink("$g4[path]/data/file/$bo_table/섬네일 폴더명/$write[wr_id]"); //썸네일 삭제
    @unlink("$g4[path]/data/file/$bo_table/최근게시물섬네일폴더명/$write[wr_id]"); //최근게시물 썸네일 삭제

이런방식으로 변경해줘야 합니다..
<?

if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가



// 자신만의 코드를 넣어주세요.


//print_r2($_FILES); exit;

$data_path = $g4[path]."/data/file/$bo_table";
$thumb_path = $data_path.'/thumb';

if ($_FILES[bf_file][name][0])
{
    $row = sql_fetch(" select * from $g4[board_file_table] where bo_table = '$bo_table' and wr_id = '$wr_id' and bf_no = '0' ");

    $file = $data_path .'/'. $row[bf_file];
    if (preg_match("/\.(jp[e]?g|gif|png)$/i", $file))
    {
        $size = getimagesize($file);
        if ($size[2] == 1)
            $src = imagecreatefromgif($file);
        else if ($size[2] == 2)
            $src = imagecreatefromjpeg($file);
        else if ($size[2] == 3)
            $src = imagecreatefrompng($file);
        else
            break;

        $rate = $board[bo_1] / $size[0];
        $height = (int)($size[1] * $rate);

        @unlink($thumb_path.'/'.$wr_id);
        $dst = imagecreatetruecolor($board[bo_1], $height);
        imagecopyresampled($dst, $src, 0, 0, 0, 0, $board[bo_1], $height, $size[0], $size[1]);
        imagepng($dst, $thumb_path.'/'.$wr_id, $board[bo_2]);
        chmod($thumb_path.'/'.$wr_id, 0606);
    }
}
?>

썸네일 기본스킨인데 글작성에서 이미지를 올려놓고 글수정으로 다른이미지로 변경시나 글삭제시는 썸네일이 지워지던데 글수정으로 들어가서 이미지삭제만 체크하고 글수정완료하면 만들어져있던 썸네일은 안지워지던데요?

글에서 이미지는 삭제로 아무것도없는데 리스트상에서는 썸네일이 그대로 보여지구요..
썸네일 생성디렉토리에도 그대로 남아있던데요....
DQ_Engine 갤러리를 사용하시는 분들은 아래와 같이 바꾸셔야 됩니다.

            @unlink("$g4[path]/data/file/$bo_table/wr_$write[wr_id].thumb"); //썸네일 삭제
            @unlink("$g4[path]/data/file/$bo_table/latest_thumb/$write[wr_id]"); //최근게시물 썸네일 삭제

그런데 이상하게 글 수정을 한뒤 글 보기에서 리스트로 가면 이전 썸네일이 나오는데, 새로고침을 해야 새로 등록된 썸네일로 출력되네요..

그 문제는 좀더 연구해 봐야 할듯 싶습니다.
ㅎㅎ 해결했습니다. Photofly님의 팁대로 했는데 왜 안될까하고 2시간 잡고 있다가
앗 ! 초보의 실수를 발견했습니다.ㅜㅜ

 @unlink("$g4[path]/data/file/$bo_table/thumb/$write[wr_id]"); //썸네일 삭제

이부분에서 저의 경우는 thumb파일명이 thumb100으로 되있더군요..고치고..다시시험.. 또 안되더군요..헉ㅜㅜ;;
이상타 이젠 틀린거 없는거 같은데.. 한참 고민하다

@unlink("$g4[path]/data/file/$bo_table/thumb100/$wr_id"); 이케 바꿔 봗는에 되더군요...
솔직히 되는 원리는 모르겠지만 .. 된다는데 기쁨이 넘침니다..^^
Photofly님 감솨 합니다.~
원리는 다른거 없습니다..
스킨 제작자분이 섬네일생성소스에 폴더명을 어떻게 만드느냐에 따라서 섬네일 폴더명이 다르게 생성됩니다.
 @unlink("$g4[path]/data/file/$bo_table/thumb/$write[wr_id]"); //썸네일 삭제
이부분에서
 @unlink("$g4[path]/data/file/$bo_table/폴더명/$write[wr_id]"); //썸네일 삭제
폴더명이라고 되어있는 부분을 맞춰주시면 됩니다.

하지만, 섬네일 폴더명이 다를경우 이렇게 하는것 보다는
해당스킨에서 폴더명생성소스를 수정하시는것이 더 좋습니다.
그래야만 그누보드의 원본을 빈번히 수정하지않고 위의 팁을 잘 활용할수 있거든요..
팁 감사드려요 전 잘 되는군요..
안 그래도 많이 쌓여서 걱정했는데 한 방에 해결을 했네요..
Photofly 님 Thanks~
감사합니다.

그냥 편하게
            @unlink("$g4[path]/data/file/$bo_table/thumb/$write[wr_id]"); //썸네일 삭제
    @unlink("$g4[path]/data/file/$bo_table/thumb100/$write[wr_id]"); //썸네일 삭제
    @unlink("$g4[path]/data/file/$bo_table/thumb54/$write[wr_id]"); //썸네일 삭제
            @unlink("$g4[path]/data/file/$bo_table/latest_thumb/$write[wr_id]"); //최근게시물 썸네일 삭제
하니까 여러 셈네일이 같이 처리가 되네요
'하파다이'님 말씀처럼 [이미지 삭제]만 하는 경우에는 썸네일이 지워지지 않습니다.

/bbs/write_update.php 의 120번째 줄 부근을 찾아보면 아래 내용이 있습니다.
@unlink("$g4[path]/data/file/$bo_table/$row[bf_file]");

그 밑에다가 아래 두 줄 추가하시면 해결됩니다.

@unlink("$g4[path]/data/file/$bo_table/섬네일 폴더명/$write[wr_id]"); //썸네일 삭제
@unlink("$g4[path]/data/file/$bo_table/최근게시물섬네일폴더명/$write[wr_id]"); //최근게시물 썸네일 삭제
윗분들 말씀중에 글수정을 통해 이미지만 삭제할 경우 최신글 썸네일이 사라지지 않는 현상이 있는데,
이는 업로더의 종류에 따라 다른것 같습니다.
저같은 경우는 지업로더를 사용할 경우 위와 같은 문제가 발생하고 있으며,
기본적인 업로드(개별)를 할경우 정상적으로 삭제가 되네요.

또는 썸네일을 저장하는 엔진이 다를 경우에도 이와같은 문제점이 발생하는 것 같습니다.

전 일단 지업로더의 delete 부분으로 들어가 같은 경로에 알려주신 삭제 코드 추가로 해결은 했습니다만, 새로고침을 해야 정상적으로 변경이 되는군요.
전체 3,313 |RSS
그누4 팁자료실 내용 검색

회원로그인

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