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($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>
답변 1
위 소스 중에 다음과 같은 부분이 있네요.~
$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); 이 되겠죠.
답변을 작성하시기 전에 로그인 해주세요.