테스트 사이트 - 개발 중인 베타 버전입니다

핀테스트 겔러리 latest 관련 문의 드립니다. 채택완료

로스트월드now 6년 전 조회 2,258

https://sir.kr/g5_skin/16143">https://sir.kr/g5_skin/16143  글의 그림자밟기 님의 latest를 응용중입니다.

latest를 활용하여 겔러리 리스트와 클릭시 상세보기 기능입니다.

 

질문요지...

해당 내용을 보면  섬네일 클릭시 해당게시판의 첨부파일을 계속 불러오는게 아니고  다음 이미지를 누르면 다음 게시판 이미지가 나옵니다....  이걸 해당게시판 첨부파일 섬네일 수량 만큼 볼수 있을까요???

 

latest 원문입니다.

 

<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
include_once(G5_LIB_PATH.'/thumbnail.lib.php');
$thumb_long = 960; // 썸네일 긴축
$thumb_width = 452; // 화면에 표시될 썸네일 너비
/*
1100px 기준
width: 194,  5개
width: 247,  4개
width: 336,  3개
width: 515,  2개
1880px 기준
width: 442,  4개
width: 349,  5개
width: 288,  6개
width: 244,  7개
*/


// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
add_stylesheet('<link rel="stylesheet" href="'.$latest_skin_url.'/css/style.css">', 1000);
add_stylesheet('<link rel="stylesheet" href="'.$latest_skin_url.'/css/imagelightbox.css">', 1000);

// 게시글리스트 썸네일 생성
function get_list_thumbnail_masonry($bo_table, $wr_id, $thumb_long, $is_create=false, $is_crop=false, $crop_mode='center', $is_sharpen=false, $um_value='80/0.5/3')
{
    global $g5, $config;
    $filename = $alt = "";
    $edt = false;

    $sql = " select bf_file, bf_content from {$g5['board_file_table']}
                where bo_table = '$bo_table' and wr_id = '$wr_id' and bf_type between '1' and '3' order by bf_no limit 0, 1 ";
    $row = sql_fetch($sql);

    if($row['bf_file']) {
        $filename = $row['bf_file'];
        $filepath = G5_DATA_PATH.'/file/'.$bo_table;
        $alt = get_text($row['bf_content']);
        $srcfile = $filepath.'/'.$filename;
        $size = @getimagesize($srcfile);
    } else {
        $write_table = $g5['write_prefix'].$bo_table;
        $sql = " select wr_content from $write_table where wr_id = '$wr_id' ";
        $write = sql_fetch($sql);
        $matches = get_editor_image($write['wr_content'], false);
        $edt = true;

        for($i=0; $i<count($matches[1]); $i++)
        {
            // 이미지 path 구함
            $p = parse_url($matches[1][$i]);
            if(strpos($p['path'], '/'.G5_DATA_DIR.'/') != 0)
                $data_path = preg_replace('/^\/.*\/'.G5_DATA_DIR.'/', '/'.G5_DATA_DIR, $p['path']);
            else
                $data_path = $p['path'];

            $srcfile = G5_PATH.$data_path;

            if(preg_match("/\.({$config['cf_image_extension']})$/i", $srcfile) && is_file($srcfile)) {
                $size = @getimagesize($srcfile);
                if(empty($size))
                    continue;

                $filename = basename($srcfile);
                $filepath = dirname($srcfile);

                preg_match("/alt=[\"\']?([^\"\']*)[\"\']?/", $matches[0][$i], $malt);
                $alt = get_text($malt[1]);

                break;
            }
        }
    }

    // jpg 이면 exif 체크
    if($size[2] == 2 && function_exists('exif_read_data')) {
        $degree = 0;
        $exif = @exif_read_data($srcfile);
        if(!empty($exif['Orientation'])) {
            switch($exif['Orientation']) {
                case 8:
                    $degree = 90;
                    break;
                case 3:
                    $degree = 180;
                    break;
                case 6:
                    $degree = -90;
                    break;
            }
            // 세로사진의 경우 가로, 세로 값 바꿈
            if($degree == 90 || $degree == -90) {
                $tmp = $size;
                $size[0] = $tmp[1];
                $size[1] = $tmp[0];
            }
        }
    }

    $thumb_width = $thumb_height = $thumb_long;
    if($size[0] > $size[1]) {
        // 가로 사진
        $thumb_width = $thumb_long;
        $thumb_height = round(($thumb_long * $size[1]) / $size[0]);
    } else if($size[0] < $size[1]) {
        // 세로사진
        $thumb_width = round(($thumb_long * $size[0]) / $size[1]);
        $thumb_height = $thumb_long;
    }
    if(!$filename)
        return false;

    $tname = thumbnail($filename, $filepath, $filepath, $thumb_width, $thumb_height, $is_create, $is_crop, $crop_mode, $is_sharpen, $um_value);

    if($tname) {
        if($edt) {
            // 오리지날 이미지
            $ori = G5_URL.$data_path;
            // 썸네일 이미지
            $src = G5_URL.str_replace($filename, $tname, $data_path);
        } else {
            $ori = G5_DATA_URL.'/file/'.$bo_table.'/'.$filename;
            $src = G5_DATA_URL.'/file/'.$bo_table.'/'.$tname;
        }
    } else {
        return false;
    }

    $thumb = array("src"=>$src, "ori"=>$ori, "alt"=>$alt);

    return $thumb;
}
?>
<!-- 게시판 목록 시작 { -->
<div>
    <div class="waterfall_wrap">
        <ul id="waterfall">
        <?php for ($i=0; $i<count($list); $i++) {
            if($i>1 && ($i % $bo_gallery_cols == 5))
                $style = 'clear:both;';
            else
                $style = '';
            if ($i == 0) $k = 0;
            $k += 1;
            if ($k % $bo_gallery_cols == 5) $style .= "margin:0 !important;";
            $thumb = get_list_thumbnail_masonry($bo_table, $list[$i]['wr_id'], $thumb_long);
            if($thumb['src']) {
                $img_content = '<img src="'.$thumb['src'].'" alt="'.$thumb['alt'].'" style="width:100%">';
            } else {
                continue;
            }
         ?>
            <li><div><a href="<?php echo $thumb['src'] ?>" data-imagelightbox="g" <?php echo ($list[$i]['subject']) ? 'data-ilb2-caption="'.$list[$i]['subject'].'"' : '' ?>"><?php echo $img_content ?></a></div></li>
        <?php } ?>
        </ul>
        </form>
    </div>
</div>
<script type="text/javascript" src="<?php echo $latest_skin_url ?>/js/newWaterfall.js"></script>
<script type="text/javascript" src="<?php echo $latest_skin_url ?>/js/imagelightbox.js"></script>
<script type="text/javascript">
$(document).ready(function ()
{
    $('#waterfall').NewWaterfall({
        width: <?php echo $thumb_width ?>,
        delay: 50,
    });
    $('a[data-imagelightbox="g"]').imageLightbox({
        activity: true,
        arrows: true,
        button: true,
        caption: true,
        navigation: false,
        overlay: true,
        gutter: 0,
        quitOnDocClick: true
    });
});
</script>

댓글을 작성하려면 로그인이 필요합니다.

답변 2개

채택된 답변
+20 포인트
L
6년 전

소스를 보면 다음 게시판의 이미지를 불러오는 부분이 없습니다. 
혹시 latest 의 캐시문제 아닐까 싶은데 관리자페이지 -> 캐시파일 일괄삭제를 한번 해보세요.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 3개

로스트월드now
6년 전
http://sunhoon.web-bi.net/gnu/sample/sh_masonry_gallery.php 그림자밟기님의 샘플입니다.
요기처럼 섬네일을 클릭하면 해당 1게시문의 이미지만 나오고 다음버튼을 누르면 해당게시물의 추가 첨부가 안나오고 다음게시물 이미지로 넘어가는 형식입니다.... 말씀하신내용이 해당 게시물 불러오는 소스가 없다는 건지요??^^?
L
LukcyHoo
6년 전
위에 문의글에서 다음글이 아닌 다음 게시판의 이미지가 나온다고 하셔서...
해당게시물의 추가 첨부가 나오게 하려면 손봐야 될곳이 좀 많아서 답변으로는 설명드리기 힘들것같은데.. 윗분얘기처럼 제작의뢰를 해보시는것이 좋을듯 싶습니다. 프로그램을 좀 아신다면 참고하세요.
get_list_thumbnail_masonry 에서 order by bf_no limit 0, 1 에 limit 0,1 삭제하고 있는 추가파일들을 모두 불러옴.
썸네일 처리한 이미지들은 $thumb_arr 에 array 로 여러개를 담아 return 해주고
for ($i=0; $i<count($list); $i++) { 에 $list 가 아닌 $thumb_arr 값을 for 처리해줌
로스트월드now
6년 전
답변주셔서 감사합니다. 바쁘시계지만.. 위 구문 위치 어느쪽에 써야하는지도 좀 알 수 있을까요??

댓글을 작성하려면 로그인이 필요합니다.

6년 전

sir제작의뢰에 글 올려보세요.

https://sir.kr/main/request/

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

로스트월드now
6년 전
네???

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인