유튜브 게시판 썸네일 깨지는 현상
본문
유튜브 주소를 가져오면 동영상이 자동으로 들고와지는 소스를 쓰고 있습니다.
근데 리스트 페이지에서 썸네일이 너무 깨지는데, 이 부분을 수정할수 없을까요?
<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
//include_once(G5_LIB_PATH.'/thumbnail.lib.php');
// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
add_stylesheet('<link rel="stylesheet" href="'.$board_skin_url.'/style.css">', 0);
/*
* 유투브 주소에서 Video ID를 추출합니다.
*/
if ( ! function_exists( 'get_video_id' ) )
{
function get_video_id( $str )
{
if( substr( $str, 0, 4 ) == 'http' )
{
if( strpos( $str, 'youtu.be' ) )
{
return array_pop( explode( '/', $str ) );
}
else if( strpos( $str, '/embed/' ) )
{
return array_pop( explode( '/', $str ) );
}
else if( strpos( $str, '/v/' ) )
{
return array_pop( explode( '/', $str ) );
}
else
{
$params = explode( '&', array_shift( explode( '#', array_pop( explode( '?', $str ) ) ) ) );
foreach( $params as $data )
{
$arr = explode( '=', $data );
if( $arr[ 0 ] == 'v' )
{
return $arr[ 1 ];
}
}
}
}
else
{
return $str;
}
return '';
}
}
/*
* 썸네일 주소를 가져옵니다. 기본값은 default 입니다.
*/
if ( ! function_exists( 'get_yt_thumb' ) )
{
function get_yt_thumb( $url_or_id, $type )
{
switch( $type )
{
case '0' :
return '//img.youtube.com/vi/'.get_video_id( $url_or_id ).'/0.jpg';
break;
case '1' :
return '//img.youtube.com/vi/'.get_video_id( $url_or_id ).'/1.jpg';
break;
case '2' :
return '//img.youtube.com/vi/'.get_video_id( $url_or_id ).'/2.jpg';
break;
case '3' :
return '//img.youtube.com/vi/'.get_video_id( $url_or_id ).'/3.jpg';
break;
case 'hq' :
return '//img.youtube.com/vi/'.get_video_id( $url_or_id ).'/hqdefault.jpg';
break;
case 'mq' :
return '//img.youtube.com/vi/'.get_video_id( $url_or_id ).'/mqdefault.jpg';
break;
case 'sd' :
return '//img.youtube.com/vi/'.get_video_id( $url_or_id ).'/sddefault.jpg';
break;
case 'maxres' :
return '//img.youtube.com/vi/'.get_video_id( $url_or_id ).'/maxresdefault.jpg';
break;
default :
return '//img.youtube.com/vi/'.get_video_id( $url_or_id ).'/default.jpg';
}
}
}
?>
<section id="panel" class="">
<!-- 게시판 목록 시작 { -->
<div id="bo_gall" class="container" >
<h2 class="title"><?php echo $board['bo_subject']; ?></h2>
<div class="red_line show_720 hide"></div>
<img class="hide_720" src="/images/line.jpg" alt="">
<?php if ($is_category) { ?>
<nav id="bo_cate">
<h2><?php echo $board['bo_subject'] ?> 카테고리</h2>
<ul id="bo_cate_ul">
<?php echo $category_option ?>
</ul>
</nav>
<?php } ?>
<!-- 게시판 페이지 정보 및 버튼 시작 { -->
<div id="bo_btn_top" class="hide">
<div id="bo_list_total" >
<span>Total <?php echo number_format($total_count) ?>건</span>
<?php echo $page ?> 페이지
</div>
<?php if ($rss_href || $write_href) { ?>
<ul class="btn_bo_user">
<?php if ($rss_href) { ?><li><a href="<?php echo $rss_href ?>" class="btn_b01 btn"><i class="fa fa-rss" aria-hidden="true"></i> RSS</a></li><?php } ?>
<?php if ($admin_href) { ?><li><a href="<?php echo $admin_href ?>" class="btn_admin btn"><i class="fa fa-user-circle" aria-hidden="true"></i> 관리자</a></li><?php } ?>
<?php if ($write_href) { ?><li><a href="<?php echo $write_href ?>" class="btn_b02 btn"><i class="fa fa-pencil" aria-hidden="true"></i> 글쓰기</a></li><?php } ?>
</ul>
<?php } ?>
</div>
<!-- } 게시판 페이지 정보 및 버튼 끝 -->
<form name="fboardlist" id="fboardlist" class="over_h" action="./board_list_update.php" onsubmit="return fboardlist_submit(this);" method="post">
<input type="hidden" name="bo_table" value="<?php echo $bo_table ?>">
<input type="hidden" name="sfl" value="<?php echo $sfl ?>">
<input type="hidden" name="stx" value="<?php echo $stx ?>">
<input type="hidden" name="spt" value="<?php echo $spt ?>">
<input type="hidden" name="sst" value="<?php echo $sst ?>">
<input type="hidden" name="sod" value="<?php echo $sod ?>">
<input type="hidden" name="page" value="<?php echo $page ?>">
<input type="hidden" name="sw" value="">
<?php if ($is_checkbox) { ?>
<div id="gall_allchk">
<label for="chkall" class="sound_only">현재 페이지 게시물 전체</label>
<input type="checkbox" id="chkall" onclick="if (this.checked) all_checked(true); else all_checked(false);">
</div>
<?php } ?>
<ul id="gall_ul" class="gall_row">
<?php for ($i=0; $i<count($list); $i++) {
$classes = array();
$classes[] = 'gall_li';
$classes[] = 'col-gn-'.$bo_gallery_cols;
if( $i && ($i % $bo_gallery_cols == 0) ){
$classes[] = 'box_clear';
}
if( $wr_id && $wr_id == $list[$i]['wr_id'] ){
$classes[] = 'gall_now';
}
?>
<li class="<?php echo implode(' ', $classes); ?>">
<div class="gall_box">
<div class="gall_chk">
<?php if ($is_checkbox) { ?>
<label for="chk_wr_id_<?php echo $i ?>" class="sound_only"><?php echo $list[$i]['subject'] ?></label>
<input type="checkbox" name="chk_wr_id[]" value="<?php echo $list[$i]['wr_id'] ?>" id="chk_wr_id_<?php echo $i ?>">
<?php } ?>
<span class="sound_only">
<?php
if ($wr_id == $list[$i]['wr_id'])
echo "<span class=\"bo_current\">열람중</span>";
else
echo $list[$i]['num'];
?>
</span>
</div>
<div class="gall_con">
<div class="gall_img">
<a href="<?php echo $list[$i]['href'] ?>">
<?php
if ($list[$i]['is_notice']) { // 공지사항 ?>
<span class="is_notice">공지</span>
<?php } else {
$v = "";
$daumpot_limit = "";
$mov_link = "";
$img_content = "";
$mov_link = $list[$i]['wr_10'];
$youtube_url = parse_url($mov_link);
parse_str($youtube_url['query']);
if($v){
$img_content = '<img src="'.get_yt_thumb( 'http://youtu.be/'.$v, 'default' ).'" alt="'.$thumb['alt'].'" width="'.$board['bo_gallery_width'].'" height="'.$board['bo_gallery_height'].'">';
}
if(!$img_content) {
$img_content = '<span class="no_image">no image</span>';
}
echo $img_content;
}
?>
</a>
</div>
<div class="gall_text_href">
<?php
// echo $list[$i]['icon_reply']; 갤러리는 reply 를 사용 안 할 것 같습니다. - 지운아빠 2013-03-04
if ($is_category && $list[$i]['ca_name']) {
?>
<a href="<?php echo $list[$i]['ca_name_href'] ?>" class="bo_cate_link"><?php echo $list[$i]['ca_name'] ?></a>
<?php } ?>
<a href="<?php echo $list[$i]['href'] ?>" class="bo_tit">
<?php echo $list[$i]['subject'] ?>
<?php if ($list[$i]['comment_cnt']) { ?><span class="sound_only">댓글</span><span class="cnt_cmt">+ <?php echo $list[$i]['wr_comment']; ?></span><span class="sound_only">개</span><?php } ?>
</a>
</div>
<div class="gall_name">
<span class="sound_only">작성자 </span><span class="profile_img"><?php echo $list[$i]['name'] ?></span>
</div>
<div class="gall_info">
<span class="sound_only">조회 </span><i class="fa fa-eye" aria-hidden="true"></i> <?php echo $list[$i]['wr_hit'] ?>
<?php if ($is_good) { ?><span class="sound_only">추천</span><strong><i class="fa fa-thumbs-o-up" aria-hidden="true"></i> <?php echo $list[$i]['wr_good'] ?></strong><?php } ?>
<?php if ($is_nogood) { ?><span class="sound_only">비추천</span><strong><i class="fa fa-thumbs-o-down" aria-hidden="true"></i> <?php echo $list[$i]['wr_nogood'] ?></strong><?php } ?>
<span class="gall_date"><span class="sound_only">작성일 </span><i class="fa fa-clock-o" aria-hidden="true"></i> <?php echo $list[$i]['datetime2'] ?></span>
</div>
</div>
</div>
</li>
<?php } ?>
<?php if (count($list) == 0) { echo "<li class=\"empty_list\">게시물이 없습니다.</li>"; } ?>
</ul>
<?php if ($list_href || $is_checkbox || $write_href) { ?>
<div class="bo_fx">
<?php if ($list_href || $write_href) { ?>
<ul class="btn_bo_user">
<?php if ($is_checkbox) { ?>
<li><input type="submit" name="btn_submit" value="선택삭제" onclick="document.pressed=this.value" class="btn btn_b01"></li>
<!--
<li><input type="submit" name="btn_submit" value="선택복사" onclick="document.pressed=this.value" class="btn btn_b01"></li>
<li><input type="submit" name="btn_submit" value="선택이동" onclick="document.pressed=this.value" class="btn btn_b01"></li>
-->
<?php } ?>
<?php if ($list_href) { ?><li><a href="<?php echo $list_href ?>" class="btn_b01 btn">목록</a></li><?php } ?>
<?php if ($write_href) { ?><li><a href="<?php echo $write_href ?>" class="btn_b02 btn">글쓰기</a></li><?php } ?>
</ul>
<?php } ?>
</div>
<?php } ?>
<!-- 게시판 검색 시작 { -->
<fieldset id="bo_sch">
<legend>게시물 검색</legend>
<form name="fsearch" method="get">
<input type="hidden" name="bo_table" value="<?php echo $bo_table ?>">
<input type="hidden" name="sca" value="<?php echo $sca ?>">
<input type="hidden" name="sop" value="and">
<label for="sfl" class="sound_only">검색대상</label>
<select name="sfl" id="sfl">
<option value="wr_subject"<?php echo get_selected($sfl, 'wr_subject', true); ?>>제목</option>
<option value="wr_content"<?php echo get_selected($sfl, 'wr_content'); ?>>내용</option>
</select>
<label for="stx" class="sound_only">검색어<strong class="sound_only"> 필수</strong></label>
<input type="text" name="stx" value="<?php echo stripslashes($stx) ?>" required id="stx" class="sch_input" size="25" maxlength="20" placeholder="검색어를 입력해주세요">
<input type="submit" value="검색" class="sch_btn">
</form>
</fieldset>
<!-- } 게시판 검색 끝 -->
</form>
</div>
</section>
<?php if($is_checkbox) { ?>
<noscript>
<p>자바스크립트를 사용하지 않는 경우<br>별도의 확인 절차 없이 바로 선택삭제 처리하므로 주의하시기 바랍니다.</p>
</noscript>
<?php } ?>
<!-- 페이지 -->
<?php echo $write_pages; ?>
<?php if ($is_checkbox) { ?>
<script>
function all_checked(sw) {
var f = document.fboardlist;
for (var i=0; i<f.length; i++) {
if (f.elements[i].name == "chk_wr_id[]")
f.elements[i].checked = sw;
}
}
function fboardlist_submit(f) {
var chk_count = 0;
for (var i=0; i<f.length; i++) {
if (f.elements[i].name == "chk_wr_id[]" && f.elements[i].checked)
chk_count++;
}
if (!chk_count) {
alert(document.pressed + "할 게시물을 하나 이상 선택하세요.");
return false;
}
if(document.pressed == "선택복사") {
select_copy("copy");
return;
}
if(document.pressed == "선택이동") {
select_copy("move");
return;
}
if(document.pressed == "선택삭제") {
if (!confirm("선택한 게시물을 정말 삭제하시겠습니까?\n\n한번 삭제한 자료는 복구할 수 없습니다\n\n답변글이 있는 게시글을 선택하신 경우\n답변글도 선택하셔야 게시글이 삭제됩니다."))
return false;
f.removeAttribute("target");
f.action = "./board_list_update.php";
}
return true;
}
// 선택한 게시물 복사 및 이동
function select_copy(sw) {
var f = document.fboardlist;
if (sw == 'copy')
str = "복사";
else
str = "이동";
var sub_win = window.open("", "move", "left=50, top=50, width=500, height=550, scrollbars=1");
f.sw.value = sw;
f.target = "move";
f.action = "./move.php";
f.submit();
}
</script>
<?php } ?>
<!-- } 게시판 목록 끝 -->
답변 1
$img_content = '<img src="'.get_yt_thumb( 'http://youtu.be/'.$v, 'default' ).'" alt="'.$thumb['alt'].'" width="'.$board['bo_gallery_width'].'" height="'.$board['bo_gallery_height'].'">';
여기서 default 를 mq 나 hq 로 변경해보세요.