[이전버젼 개선] 썸네일갤러리및 최신글용 갤러리 > 그누4 스킨

그누4 스킨

스킨의 저작권은 해당 스킨 제작자님께 있으며, 그누보드의 저작권과 다를 수 있습니다.
스킨 다운로드시 좋아요와 감사의 코멘트를 남기시면 제작자에게 큰 힘이됩니다. ^^y
그누보드와 관련이 있지만 스킨과 빌더가 아니면 플러그인 게시판에 올려주세요.

[이전버젼 개선] 썸네일갤러리및 최신글용 갤러리 정보

갤러리 [이전버젼 개선] 썸네일갤러리및 최신글용 갤러리

첨부파일

yesmoa_갤러리스킨.zip (90.4K) 1507회 다운로드 2007-01-10 17:05:52

본문

[적용버젼 : 4.11.00]

- 갤러리용 스킨과 최신글스킨 입니다
- 이전에 배포한 스킨을 업그레이드한 것입니다.
  이전스킨 -> http://www.sir.co.kr/bbs/board.php?bo_table=g4_skin&wr_id=26820
                    http://www.sir.co.kr/bbs/board.php?bo_table=g4_skin&wr_id=26546

- 서버에 GD 2.01 이상설치되어 있어야 사용가능합니다.


[스킨링크] 아래댓글 참고
           


[설치방법]
-----------------------------------------------------------------------
압축을 해제하시면 2개의 폴더가 보입니다. 각각 경로에 맞게 업로드하세요.

1. photo_thumb_new    갤러리스킨      (/skin/board 폴더내에 위치)
2. la_photo_thumb_new  최신글이미지스킨 (/skin/latest 폴더내에 위치)


[참고사항]
-----------------------------------------------------------------------
여유필드 1,2,3 을 사용합니다.

- 필드1 : 스타일쉬트 지정 (숫자 1,2,3,4 중 선택입력)
- 필드2 : 뷰화면에서 이미지 가로보기 갯수지정 ("글쓰기화면"에서 직접지정함)
- 필드3 : 이미지 새창보기 옵션지정 (숫자 1,2,3,4 중 선택입력)



[기능]
------------------------------------------------------------------------
1. 스타일쉬트 지정

완전한 기능은 아닙니다. 스타일값 파일을 여러개 만들어서 게시판에 따라서
보기형태를 달리하는 기능입니다. (설치시, 숫자 '1' 권장)


2. 뷰화면에서 가로보기 갯수지정

이미지를 두개이상 업로드시, 뷰화면에서 가로로 볼수있는 이미지의 갯수를
지정하는 기능입니다.


3. 리스트화면에서 이미지 새창보기

말그대로 리스트화면에서 이미지를 볼수있는 기능을 옵션으로 지정할수 있도록 했습니다.
현재 링크스킨은 '필드3에서 1번으로 지정'된 상태임.

4. 기타
버튼 모두 교체~~



[기타후기]
------------------------------------------------------------------------
기본 배포했던 스킨의 썸네일기능이 최신글에서 좀 아쉬운 문제가 있었는데
최근에 올라온 스킨에서 본 코드를 응용해서 수정되었습니다.

코드를 정리해뒀으니, 공부삼아 파일들을 하나씩 열어보시면 이해가 쉬울겁니다.



★★★★★ 아쉬운점
------------------------------------------------------------------------
다른 스킨들도 비슷한 현상을 보입니다만,
이전 배포스킨에서 해결한 문제인데..이번 스킨에서 다시 생긴 문제는

이미지등록시, 처음파일등록폼을 비워두고 두번째 파일등록폼부터 이미지를
올리면 리스트화면상에서 '노이미지'로 나타납니다.


위 부분은 이전에도 도움글 주셨던 'damoa.biz'님께 or 다른 고수분께
정식으로 다시 도움을 요청합니다. 좀 부탁드립니다.
에러라고 보기는 애매한건데, 어쨋던 이부분만 해결되면 확실히 깔끔해질듯 합니다.
------------------------------------------------------------------------
추천
4
  • 복사

댓글 전체

forever님이 지적하신 부분을 나름대로 수정해보았습니다.
저도 여기저기서 짜집기한거라서 많이 지저분합니다.
forever님이 좀 더 깔끔하게 다듬어 사용하시기를 바랍니다.^^
수정은 3가지입니다.
수정한 것을 테스트해본곳은 아래 링크로 첨부합니다.
http://www.damoa.biz/g40900/bbs/board.php?bo_table=yesmoa_gallery

1. list.skin.php 의 line 91부터 140까지 부분을 아래 코드로 대체했습니다.
/* -- ------------------------------ 썸네일 만들기 시작 -------------------- -- */

include_once $board_skin_path."/thumb_include.php";  // 썸네일관련 함수파일
$img_cnt = array() ;
for ($k=0,$img_num=0; $k<$list[$i][file][count]; $k++) {
        if($list[$i][file][$k][file]) { //break;
                $img_cnt[$img_num]=$list[$i][file][$k][file] ;
                $img_num ++;
        }
}
$max_img_cnt = count($img_cnt) ;
$image = $img_cnt[0];
$ori="$g4[path]/data/file/$bo_table/" . $image;
$ext = strtolower(substr(strrchr($ori,"."), 1)); //확장자

if ( $ext=="gif"||$ext=="jpg"||$ext=="jpeg"||$ext=="png"||$ext=="bmp"||$ext=="tif"||$ext=="tiff") {
                $ori_info=getimagesize($ori);
        }else {
                $ori_info="";
        }
/* 참고 : getimagesize함수용
1 = GIF, 2 = JPG, 3 = PNG, 4 = SWF, 5 = PSD, 6 = BMP, 7 = TIFF(intel byte order), 8 = TIFF(motorola byte order)
,
9 = JPC, 10 = JP2, 11 = JPX, 12 = JB2, 13 = SWC, 14 = IFF, 15 = WBMP, 16 = XBM
*/

// -- ----- 원파일이 [ 1GIF, 2JPG, 2JPEG, 3PNG ] 경우
if ( $ori_info[2]=="1" || $ori_info[2]=="2" || $ori_info[2]=="3" ) {

                $thum = $ori.".Thum" ;
                if ( file_exists($thum) ) { // Thumbnail [O] 경우

                        $thum_info = getimagesize ($thum);
                        $thum_W = $thum_info[0] ;
                        $thum_H = $thum_info[1] ;

                } else { // Thumbnail [X] 경우

                        if ( smaller( $ori_info[0], $ori_info[1] ) ) {

                                maker( $thum_W, $thum_H );
                        }
                }

// ------- 원파일이 [ 6BMP,7TIF, 8TIFF ] 경우
} else if ( $ori_info[2]=="6" || $ori_info[2]=="7" || $ori_info[2]=="8" ) {

                        if ( smaller( $ori_info[0], $ori_info[1] ) ) {

                                $thum = $ori ;
                        }

} else { //========================== 원파일이 [ 1,2,3,6,7,8 ] 아닐 경우.
        $noIMG = $board_skin_path."/img/no_image.jpg"; //[필수](URL)
        /*
        $thum = $noIMG ;
        $noIMG_info = getimagesize ($noIMG);
        $thum_W = $noIMG_info[0] ;
        $thum_H = $noIMG_info[1] ; */
        $thum = $noIMG ;
    $noIMG_info = getimagesize ($noIMG);
    /* gallery_thumb 스킨에서 썸네일 최대폭값을 읽어와서 폭과 높이를 구하기 위해 수정 */
    smaller($noIMG_info[0],$noIMG_info[1]);
    $thum_W = $thum_W;
    $thum_H = $thum_H;
}
$thumbnail_img = str_replace('%', '%25', $thum);

/* -------------------------------- 썸네일 만들기 끝 ---------------------- */

2. list.skin.php 의 line 190의 echo $thumbnail_img;  이 부분을 아래와 같이 수정했습니다.
        echo "<img src=$thumbnail_img border=0>";
3. 스킨폴더에 thumb_include.php 파일을 추가했습니다. 파일 내용은 아래와 같습니다.
<?
$thum_max_size = 120;
$noIMG = $board_skin_path."/img/no_image.jpg"; //[필수](URL)
$max = $thum_max_size; //[설정](픽셀)    // 썸네일 이미지의 가로세로(긴쪽)의 최대치.
$resol =        80 ; //[설정](퍼센트%) // 생성되는 썸네일의 JPG압축률.

// ########## 썸네일 관련 함수 ###############################

function smaller( $W, $H ) {
        global $max, $thum_W, $thum_H ;
if ($W < 120){          //가로가 120보다 작을때
  if ($H > 90){        //세로가 90보다 크면
      $size1 = 90 ;          //세로를 90에 맞춘다
      $size0 = ceil( $W * ( 90 / $H ) );      //세로가 줄어든 비율에 따라 가로를 줄인다
    } else {                    //세로가 90보다 안크면
      $size1 = $H;      //세로는 원래 사이즈
      $size0 = $W;      //가로도 원래 사이즈- 가로가 120보다 작은경우내 이므로
    }
}else{                                                      //가로가 120이상일때
  if (( $H / $W ) > (90 / 120)){    //  세로/가로 가  위에서 정한 창의비율 90/120 보다 크면
      $size1 = 90 ;                                              //세로를먼저 500에 맞추고
      $size0 = ceil( $W * ( 90 / $H ) );    //가로를 그 줄어든 비율에 따라 맞춘다
      }else{                                                        //세로/가로 가  위에서 정한 창의비율 90/120
 보다 작으면
      $size0 = 120 ;                                                //가로를 120에 맞추고
      $size1 = ceil( $H * ( 120 / $W ) );        //세로를 그 줄어든 비율에 따라 맞춘다
  }
}
        $thum_W = $size0;
        $thum_H = $size1;

/*
                if ( $W > $H ) { //가로형일 경우.
                        $thum_W = $max ;
                        $thum_H = ceil( $H * ( $max / $W ) );
                }
                if ( $W < $H ) { //세로형일 경우.
                        $thum_H = $max ;
                        $thum_W = ceil( $W * ( $max / $H ) );
                }
                if ( $W == $H ) { //정사각형일 경우.
                        $thum_W = ceil( $max * 0.8 );
                        $thum_H = ceil( $max * 0.8 );
                }
*/
        return $thum_W ;
        return $thum_H ;
}

function maker( $thum_W, $thum_H ) {
        global $thum, $resol, $ori, $ori_info ;

                //$newImg = ImageCreate($thum_W,$thum_H); // GD라이브러리 2.0 (이하일 경우)
                $newImg = ImageCreateTrueColor($thum_W,$thum_H); // GD라이브러리 2.0 전용함수

                if($ori_info[2]=="1") $origImg=imagecreatefromgif($ori);
                if($ori_info[2]=="2") $origImg=ImageCreateFromjpeg($ori);
                if($ori_info[2]=="3") $origImg=ImageCreateFrompng($ori);
                //if($ori_info[2]=="6") $origImg=imagecreatefromwbmp($ori);

                //ImageCopyResized($newImg,$origImg,0,0,0,0,$thum_W,$thum_H,ImageSX($origImg),ImageSY($origImg)
);
                imageCopyResampled($newImg,$origImg,0,0,0,0,$thum_W,$thum_H,ImageSX($origImg),ImageSY($origImg)
);

                Imagejpeg($newImg, $thum, $resol );

                chmod($thum,0707);
                ImageDestroy($newImg);
                ImageDestroy($origImg);

        return $thum ;
}
// #########################################################


?>
좋은자료 감사합니다.

글 수정후 게시판의 첫페이지로 넘어가지 않고 수정한 그내용을 보고싶어서 아래를 수정해보았습니다.


write_update.skin.php  42라인

원본 :  goto_url("./board.php?bo_table=$bo_table");
수정 :  goto_url("./board.php?bo_table=$bo_table&wr_id=$wr_id&page=$page");
Fatal error: imagecreatetruecolor(): requires GD 2.0 or later in /z2/jcj0426/public_html/board/skin/board/photo_thumb_new/list.skin.php on line 132   

이런건 왜 나오죠? 초보라서요. 부탁함다

http://kingpearls.com/board/bbs/board.php?bo_table=pearls1
초보라서...
- 서버에 GD 2.01 이상설치되어 있어야 사용가능합니다 -
이거 설치여부를 어찌 알수 있나요?
설치 했더니 아래와 같은 에러가 나서요..
혹시 GD 때문인가 해서요.

Warning: main(../skin/board/photo_thumb_new/list.skin.php): failed to open stream: No such file or directory in /home/hosting_users/smseven/www/bbs/list.php on line 157

Warning: main(): Failed opening '../skin/board/photo_thumb_new/list.skin.php' for inclusion (include_path='.:/usr/local/lib/php') in /home/hosting_users/smseven/www/bbs/list.php on line 157
일단 감사드리구여...
 적용도중.. 뷰 페이지에서 이미지 밑에
Warning: Division by zero in /svc/www/koreabonsai/html/skin/board/photo_thumb_new/view.skin.php on line 139
문구가 딸려서 뜨는데...  해결법좀 부탁드립니다... ^^;;
설명서를 봐도 당최 모르겠네 그림은 두개 올리고 최신글 화면 보니 카메라 그림만 보이네요 초보라 머리고생 손고생 마음 고생입니다
다른분들은 문제 없이 잘 사용중인지 모르겠습니다만.. 저는 리스트에 떠야될 썸네일에 자꾸 엑박이 떠서 list.skin.php 를 좀 손봤습니다. 썸네일이 8.jpg 같은 이미지 파일이 아니고 그냥 8 로만 저장이되는데 제작자분이 일부러 하신건지 모르겠으나 제가 사용중인 서버(미국서버)에서는 계속 엑박이 뜨더군요. 혹시 저와같은 문제가 발생하시는분은 저한테 쪽지 주세요
이거 아주 좋습니다. 사용하기도 편하구요.

여분필드 3번으로 제어하는 '1-이미지,제목 클릭시 게시물로이동/2-이미지클릭시 새창에 이미지,제목클릭시 게시물로이동/3-이미지클릭시 새창에 이미지,제목클릭시 새창에 게시물'

list.skin.php에 보시면 image_window.js를 요구하는것이 보이실 겁니다.

근데 스킨에는 js파일이 엄써요!!!!
그래서 2,3을 선택시 상태표시줄에 스크립트애러가 발생합니다.
주석처리 하시면 애러는 안뜨구요 (작동도 잘됩니다.)

if($board[bo_3] == '2') { // 리스트이미지:새창, 제목글:뷰화면
echo "<script language='javascript' src='{$board_skin_path}/image_window.js'></script>";
$view_img  = "<a href=\"javascript:;\" OnClick=\"image_window2('$g4[path]/data/file/$bo_table/$image')\" onFocus=\"this.blur();\">";
$view_href = "<a class='bl' href='{$g4[bbs_path]}/board.php?bo_table=$bo_table&wr_id={$list[$i][wr_id]}&page=$page'>";
}
© SIRSOFT
현재 페이지 제일 처음으로