view 페이지에 Lightbox 2.02 적용하기! > 그누4 팁자료실

그누4 팁자료실

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

view 페이지에 Lightbox 2.02 적용하기! 정보

view 페이지에 Lightbox 2.02 적용하기!

첨부파일

lb.zip (77.5K) 86회 다운로드 2006-12-04 17:00:46
view.head.skin.php (1.5K) 36회 다운로드 2006-12-06 03:42:46

본문

** 긴급 수정 : 줄 40에 $height 옆에 100을 $lb_width로 수정바람

안녕하세요^^ 슈가쭌입니다!
플록님께서 리스트에 Lightbox 및 슬라이드쇼를 적용시킨 스킨을 배포하였으나
view 페이지에서는 Lightbox가 적용이 안되어서 아쉬웠습니다
그래서 밤새서 간신히 만든 셤네일+Lightbox의 합작(?)을 팁으로 내놓기로 하였습니다.

자료 첨부된 파일중 lb.zip 은 라이트박스며, 압축을 풀어서 스킨폴더에 넣어주세요.
그리고 2번째 파일은 view.head.skin.php이며, 이 파일은 셤네일 생성 및 함수가 조금 있습니다. 스킨폴더에 넣어주세요.
* view.head.skin.php에서 $lb_width는 셤네일 가로크기를 설정합니다. 기본 100으로 되어있으며, 수정시에는 위 파일로 들어가시면 됩니다.

다 하셨나요? ^^

그러면 view.skin.php를 열어주세요.
상단에 아래 코드를 삽입하세요.

<script type="text/javascript" src="<?=$board_skin_path?>/lb/js/prototype.js"></script>
<script type="text/javascript" src="<?=$board_skin_path?>/lb/js/scriptaculous.js?load=effects"></script>
<script type="text/javascript" src="<?=$board_skin_path?>/lb/js/lightbox.js"></script>
<link rel="stylesheet" href="<?=$board_skin_path?>/lb/css/lightbox.css" type="text/css" media="screen" />

그 다음 아래 소스를...

        <?
        // 파일 출력
        for ($i=0; $i<=count($view[file]); $i++) {
            if ($view[file][$i][view])
                echo $view[file][$i][view] . "<p>";
        }
        ?>

다음 소스로 바꿔주세요!

        <div align=center>
        <?
// 파일 출력
for ($i=0; $i<=count($lb); $i++) {
        ?>
<?=$lb[$i][href]?><?=$lb[$i][img]?><?=$lb[$i][end_href]?>&nbsp;
        <?
if($i % $board[bo_gallery_cols] == 0 && $i != 0) echo"<br>";
}
          ?>
          </div>

<*****>
* 셤네일 생성
일반 셤네일 생성과 달리, 첨부된 모든 이미지의 셤네일을 생성합니다.
그리하여 일반 셤네일 생성 코드를 따르면 중복이 되어서 결국 복잡해지죠.
그리하여 셤네일 path 에 $wr_id path를 추가하여 중복이 되는일이 없도록 하였습니다.

* Lightbox 2.02
2.02 버젼같은경우 같은 그룹으로 묶였을경우, 수동 슬라이드 방식이 지원된다고 하여 view 페이지에서는 모든 셤네일을 그룹으로 묶었습니다.

* List 적용
리스트 페이지에선 다소 복잡합니다. 적용하실경우, 모든 디렉터리와 파일이 view 페이지와 일치해야한다는 점에서 list.skin.php 에서는 다르게 구조가 되었습니다.

list.skin.php 상단에 다음 코드를 삽입해주세요. ($lb_width 함수는 셤네일 가로크기)
<?
$lb_width = 100;
$image_quality = 100;
$data_path = $g4[path]."/data/file/".$bo_table;

$mod = 5;
$td_width = (int)(100 / $mod);
?>
<script type="text/javascript" src="<?=$board_skin_path?>/lb/js/prototype.js"></script>
<script type="text/javascript" src="<?=$board_skin_path?>/lb/js/scriptaculous.js?load=effects"></script>
<script type="text/javascript" src="<?=$board_skin_path?>/lb/js/lightbox.js"></script>
<link rel="stylesheet" href="<?=$board_skin_path?>/lb/css/lightbox.css" type="text/css" media="screen" />

그리고 for 함수 아래에 다음 소스를 붙여주세요!

<?
$thumb_path = $data_path.'/lb_thumb'.$list[$i][wr_id];

@mkdir($thumb_path, 0707);
@chmod($thumb_path, 0707);

    $img = "";
$v = "0";
    $thumb = $thumb_path.'/'.$v;
    $file = $list[$i][file][0][path] .'/'. $list[$i][file][0][file];
    if (!file_exists($thumb))
    {
        if (preg_match("/\.(jp[e]?g|gif|png)$/i", $file) && file_exists($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
                continue;

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

$dst = imagecreatetruecolor(100, $height);
           
imagecopyresampled($dst, $src, 0, 0, 0, 0, 100, $height, $size[0], $size[1]);
            imagepng($dst, $thumb_path.'/'.$v, $image_quality);
            chmod($thumb_path.'/'.$v, 0606);
        }
    }

    if (file_exists($thumb))
        $img = "<img src='$thumb' border=0>";
$img_href = "<a href='{$file}' rel=lightbox title='&lt;a href=&quot;{$list[$i][href]}&quot;&gt;{$list[$i][subject]}&lt;/a>'>";
?>

이제 출력하고 싶은 장소를 잘 골라 위 $img, $img_href 소스를 적용시켜주세요.

<?=$img_href?><?=$img?></a>

그러면 완성하였습니다!

<****)
List의 경우 싱글 이미지로만 Lightbox가 적용이 되었습니다
그리고 왼쪽 아래에는 글 링크가 따로 되어있습니다 ^^
그걸 누를시 글로 이동됩니다

이만 슈가쭌이였습니다^^
추천
0
  • 복사

댓글 7개

>> view.head.skin.php에서 $lb_width는 셤네일 가로크기를 설정합니다. 기본 100으로 되어있으며, 수정시에는 위 파일로 들어가시면 됩니다.

100을 초과하니까 썸네일이 이상합니다.
이미지가 찌그러지며 오른쪽에 시커멓게 나오네요
100 넘어도 괜찮은데요...

혹시 셤네일을 100으로 맞췄다가 다시 올렸으면 그런 형상이 일어날수도 있고, 작은 크기일때도 그럴 증상이 일어날수 있습니다
오른쪽에 시커멓게 나오는건 공백을 채우기위해 소스가 되어있습니다 (원래 그렇습니다 이유는 잘 모름...)

테스트 페이지를 쪽지로 보내주세요^^;
쪽지 보내 드렸습니다.

처음에 100으로 했다가 250정도로 사이즈 바꾸고 data 디렉토리 아래에 있는 썸네일 파일 다 지우고 다시 리로드 했는데도 그러네요........
© SIRSOFT
현재 페이지 제일 처음으로