board_youtube_default 스킨은 유튜브 썸네일을 리스트에 출력해주는 스킨입니다.

이 스킨은 사용자정의 필드에 유튜브 변수값을 입력받을 경우 처리하는 방식입니다.


코드는 다음과 같습니다.

{@
   $youtube_eid = $module_info->youtube_eid;
   $youtube_code = $document->getExtraEidValue($youtube_eid);
$youtube_id = str_replace('http://youtu.be/','',$youtube_code);
$youtube_id = str_replace('https://youtu.be/','',$youtube_id);
             }
 <span class="thumb">
   <img src="https://img.youtube.com/vi/{$youtube_id}/hqdefault.jpg" />
 </span>


이걸 참조해서, 글 본문에 유튜브 링크가 있는 경우 썸네일을 출력해주는 방법입니다.

먼저 게시판 설정에서 '요약'을 리스트에 추가해주세요.

그래야 $document->getSummary() 변수를 사용할 수 있습니다.


먼저 적용한 전체 코드를 살펴보겠습니다.

{@
//$youtubeUrl = "https://youtu.be/";
//$youtubeUrl = "https:\/\/youtu.be\/\D+[a-z-]";
// $youtubeId =
// var_dump(preg_match("/youtube/i",$document->getSummary()))
}
<?php
// $string = "https://youtu.be/X37-plgL-Xs tkf";
$string = $__Context->document->getSummary(500);
// echo ($string);
//$result = preg_match("/https:\/\/youtu.be\/\D+[^\b]/i",$string,$matches);
// $result = preg_match("/(https:\/\/youtu.be\/)([a-z]\D+)\s/i",$string,$matches); // abc는 됨..
//$result = preg_match("/(https:\/\/youtu.be\/)(.+[A-Za-z-0-9])/i",$string,$matches);
$result = preg_match("/(https:\/\/youtu.be\/)(.+[A-Za-z-0-9]+)(https:\/\/youtu.be)/i",$string,$matches) || preg_match("/(https:\/\/youtu.be\/)(.+[A-Za-z-0-9])/i",$string,$matches);
if($result==true){
// echo var_dump($result);
// echo ('있음'.'<br>');
// echo $matches[0].'<br>';
// echo $matches[1].'<br>';
// echo $matches[2].'<br>';
echo ('<img src="https://img.youtube.com/vi/'.$matches[2].'/hqdefault.jpg" />');
}
?>

작성 편의상 XE템플릿이 아닌 PHP 코드를 그대로 작성했습니다.


{@

$string = $document->getSummary(500); // 적당하게 500글자를 뽑아옵니다. 500글자 안에 없으면 -_- 없는걸로..

}


그 다음은 정규식을 뽑아와야 하는데, 에디터에 따라, 사용하는 애드온에 따라 출력방식이 다르기 때문에 두가지 경우를 다 작성해주었습니다.

CASE1

가나다라마바사 https://youtube/ID 아자차카타파하

CASE2

가나다라마바사 https://youtube/IDhttps://youtube/ID 아자차카타파하

$document->getSummary를 하다보니 에디터나 애드온에 따라서 저런 식으로 출력되더군요.

preg_match 함수를 사용해서 두 가지 경우를 모두 다 적어주도록 했습니다.

{@

$result = preg_match("/(https:\/\/youtu.be\/)(.+[A-Za-z-0-9]+)(https:\/\/youtu.be)/i",$string,$matches) || preg_match("/(https:\/\/youtu.be\/)(.+[A-Za-z-0-9])/i",$string,$matches);

}

그리고 썸네일은 이런 식으로 적어줄 수도 있습니다.

{@

$youtubeThumbnail =  '<img src="https://img.youtube.com/vi/'.$matches[2].'/hqdefault.jpg" />';

}

그러면 이런 식으로 작성 가능하겠죠.

{$youtubeThumbnail }


자 다시 XE템플릿코드로 정리해보면 아래와 같이 작성 가능합니다.

{@
$string = $document->getSummary(500);
$result = preg_match("/(https:\/\/youtu.be\/)(.+[A-Za-z-0-9]+)(https:\/\/youtu.be)/i",$string,$matches) || preg_match("/(https:\/\/youtu.be\/)(.+[A-Za-z-0-9])/i",$string,$matches);
$youtubeThumbnail =  '<img src="https://img.youtube.com/vi/'.$matches[2].'/hqdefault.jpg" />';
}
{$youtubeThumbnail}

혹은 아래와 같이 작성해줄 수도 있습니다.

{@
$string = $document->getSummary(500);
$result = preg_match("/(https:\/\/youtu.be\/)(.+[A-Za-z-0-9]+)(https:\/\/youtu.be)/i",$string,$matches) || preg_match("/(https:\/\/youtu.be\/)(.+[A-Za-z-0-9])/i",$string,$matches);
// $youtubeThumbnail =  '<img src="https://img.youtube.com/vi/'.$matches[2].'/hqdefault.jpg" />';
}
<img src="https://img.youtube.com/vi/{$matches[2]}/hqdefault.jpg" cond="$matches[2]">

#유튜브 #유튜브썸네일

 
댓글은 로그인 사용자만 작성 가능합니다. 로그인하기