갤러리 리스트 썸네일에서 하나를 추가하고 싶습니다.
본문
안녕하세요.
제가 아래와 같은 방법으로 갤러리 게시판 리스트에서 썸네일을 불러오고 있습니다.
<?php
if ($list[$i]['is_notice']) { // 공지사항 ?>
<img src="<?php echo $board_skin_url ?>/img/notice.gif" class="img-fluid">
<?php }else if($list[$i]['icon_secret']) { ?>
<img src="<?php echo $board_skin_url ?>/img/secret.gif" class="img-fluid">
<?php } else {
$thumb = get_list_thumbnail($board['bo_table'], $list[$i]['wr_id'], $board['bo_gallery_width'], $board['bo_gallery_height'], false, true);
$img_content = '';
if($thumb['src']) {
$img_content = '<img src="'.$thumb['src'].'" class="img-fluid">';
} else if($list[$i]['wr_4']) {
$img_content = '<img src="'.$list[$i]['wr_4'].'" class="img-fluid1">';
} else {
$thumbnail_file = substr($list[$i]['wr_9'], 0, 4) == "http" ? $list[$i]['wr_9'] : substr(str_replace("/", "", str_replace("?v=", "", substr(explode("https://www.youtube.com/watch", $list[$i]['wr_content'])[1], 0, 21))), 0, 11);
if (empty($thumbnail_file)) {
$thumbnail_extension = [".jpg", ".png", ".gif", "jpeg", ".mp4"];
foreach ($list[$i]['file'] as $thumbnail) {
if (in_array(strtolower(substr($thumbnail['file'], -4)), $thumbnail_extension)) {
$thumbnail_file = $thumbnail['path']."/".$thumbnail['file'];
break;
}
else $thumbnail_file = $board_skin_url."/img/no_image.gif";
}
}
$thumbnail_file = substr($thumbnail_file, 0, 4) == "http" ? $thumbnail_file : "https://img.youtube.com/vi/".$thumbnail_file."/maxresdefault.jpg";
$img_content = strtolower(substr($thumbnail_file, -4)) == ".mp4" ? "<video class='img-fluid2' src='".$thumbnail_file."' loop muted></video>" : "<img class='img-fluid' src='".$thumbnail_file."'>";
}
echo run_replace('thumb_image_tag', $img_content, $thumb);
}
?>
여기에 유튜브 쇼츠 썸네일을 더 추가하고 싶은데 방법을 모르겠습니다.
substr(str_replace("/", "", str_replace("?v=", "", substr(explode("https://www.youtube.com/watch", $list[$i]['wr_content'])[1], 0, 21))), 0, 11);
이 부분을
substr(str_replace("/", "", str_replace("?v=", "", substr(explode("https://www.youtube.com/shorts", $list[$i]['wr_content'])[1], 0, 21))), 0, 11);
로 바꾸면 쇼츠로 올린 영상의 썸네일이 불러와지기는 하지만 이렇게 변경하면 유튜브 영상의 썸네일은 불러와 지지 않습니다.
이 두 개를 같이 사용할 수 있는 방법을 아시는 분 계시면 좀 알려주세요.
감사합니다.
답변 1
/lib/common.lib.php에 아래 함수 추가하시고
function get_youtube_id($url)
{
$regex = '#^(?:https?://|//)?(?:www\.|m\.|.+\.)?(?:youtu\.be/|youtube\.com/(?:embed/|v/|shorts/|feeds/api/videos/|watch\?v=|watch\?.+&v=))([\w-]{11})(?![\w-])#';
preg_match($regex, $url, $matches);
return isset($matches[1]) ? $matches[1] : null;
}
아래코드는 리스트에 넣어서 응용하세요
$thumbnail_file = "https://img.youtube.com/vi/".get_youtube_id($list[$i]['wr_9])."/maxresdefault.jpg";
!-->!-->
답변을 작성하시기 전에 로그인 해주세요.