latest 를 사용해 특정글의 이미지 불러오기 질문 드릴게 있습니다. 채택완료
천사밍
6년 전
조회 3,630
안녕하세요.
latest 최신글 불러오기를 사용해 각 글들의 메인 이미지를 쭉 가지고오고 있는 소스인데 아래 같이 올린 소스를 좀 변형해서 전체글의 이미지 말고 특정 게시판에 올려진 사진을 불러와 보여주고 싶은데 어디를 변경해야 할까요?
이렇게 사용하려는 이유는 갤러리 게시판에 글 하나에 여러게의 사진을 올려놓고 그 링크를 클릭했을때 슬라이드쇼로 이미지를 보여주기 위함 입니다.
</p>
<p><?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개
*/</p>
<p>
// 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);</p>
<p>// 게시글리스트 썸네일 생성
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;</p>
<p> $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);</p>
<p> 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;</p>
<p> 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'];</p>
<p> $srcfile = G5_PATH.$data_path;</p>
<p> if(preg_match("/\.({$config['cf_image_extension']})$/i", $srcfile) && is_file($srcfile)) {
$size = @getimagesize($srcfile);
if(empty($size))
continue;</p>
<p> $filename = basename($srcfile);
$filepath = dirname($srcfile);</p>
<p> preg_match("/alt=[\"\']?([^\"\']*)[\"\']?/", $matches[0][$i], $malt);
$alt = get_text($malt[1]);</p>
<p> break;
}
}
}</p>
<p> // 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];
}
}
}</p>
<p> $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;</p>
<p> $tname = thumbnail($filename, $filepath, $filepath, $thumb_width, $thumb_height, $is_create, $is_crop, $crop_mode, $is_sharpen, $um_value);</p>
<p> 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;
}</p>
<p> $thumb = array("src"=>$src, "ori"=>$ori, "alt"=>$alt);</p>
<p> return $thumb;
}
?>
<!-- 게시판 목록 시작 { -->
<div>
<div class="waterfall_wrap">
<ul id="waterfall"></p>
<p> <?php for ($i=0; $i<count($list); $i++) {
if($bo_gallery_cols > 0 && $i>0 && ($i % $bo_gallery_cols == 0))
$style = 'clear:both;';
else
$style = '';
if ($i == 0) $k = 0;
$k += 1;
if ($bo_gallery_cols > 0 && $k % $bo_gallery_cols == 0) $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></p>
<p>
댓글을 작성하려면 로그인이 필요합니다.
답변 1개
채택된 답변
+20 포인트
마르스컴퍼니
Expert
6년 전
위 소스 중에 다음과 같은 부분이 있네요.~
$thumb = get_list_thumbnail_masonry($bo_table, $list[$i]['wr_id'], $thumb_long);
get_list_thumbnail_masonry() 의 파라미터의 첫번째에는 테이블명, 두번째에는 wr_id 를 넣어주면 되는 것 같습니다.
특정 A 게시판의 wr_id 가 17인 게시글의 이미지를 가져오려면,
get_list_thumbnail_masonry('A', '17', $thumb_long); 이 되겠죠.
로그인 후 평가할 수 있습니다
답변에 대한 댓글 3개
�
천사밍
6년 전
네 그것까진 했는데 그렇게 했더니 17번 게시물의 같은 사진이 A 게시판의 게시물 수만큼 쭉 나오더라고요 ㅠㅠ
�
마르스컴퍼니
6년 전
for 문 안에서 쓰면 게시물 수만큼 반복이 되니..
for 문 밖에서.. 쓰면 될 거예요.
<li>
<div>
<a ~>
<img>
</a>
</div>
</li>
for 문 밖에서.. 쓰면 될 거예요.
<li>
<div>
<a ~>
<img>
</a>
</div>
</li>
�
천사밍
6년 전
도움 감사합니다^^ 잘 해결 하였습니다.
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인