BB-код YOUTUBE

8.58K
.
да это и без фремворков можно сделать.
но есть один момент. неважно как вы будете реализовывать анимацию, жрать ресурсы телефонов она будет одинаково сильно.
з.ы. раньше проверял все на метале. однако посмотрел на других, понял что метал зверюга, а js долбит все таки по процу очень нехило, и порой вызывает тормоза в загрузке и отрисовке страниц.
.
ramzes (16.06.2012/21:04)
>
на попробуй добавь, это из контакта код поделиться видео))
<iframe type="text/html" width="607" height="360" src="http://www.youtube.com/embed/Bgx--hGd3oU" frameborder="0"></iframe
>
А это бесполезно.
У меня ютубовская перекодировка режет, в итоге получается
<iframe type="text/html" width="607" height="360" src="youtube-com/embed/Bgx--hGd3oU" frameborder="0"></iframe
>

и соответственно не кажет.
Нужно одинаковую обработку для контакта и ютуба,
тогда может не будет такого косяка...???
.
ramzes (16.06.2012/21:03)
<iframe style="display: none; width:480px; height:320px;"
а выключать кто будет?
А, спасибо )))
элементарно ватсон и не заметил )))))
.
blackvj (16.06.2012/21:19)
С помощью jQuery spoiler лучше смотриться...

сначала ссылка показать..после вывод содержимого.при этом ссылка меняет название на скрить.
Скрытие происходит плавно с помощью jr.
а семёрка лучше чем вин98 смотрится...
Только ресурсы разные нужны.
jQuery хорошее дело, но не забываем,
если сайт расчитан и на мобилы, то нужно выбирать золотую середину.
.
ramzes (16.06.2012/21:04)
>
на попробуй добавь, это из контакта код поделиться видео))
Самое интересное, что и ссылка из src http://www.youtube.com/embed/Bgx--hGd3oU
тоже не работает, режет youtube-com/embed/Bgx--hGd3oU
.
//bbcode addet
//это в начале функции (обязательно)

    $str = str_replace('http://www.youtube.com', 'youtube-com', $str);
    $str = str_replace('http://m.youtube.com', 'youtube-com', $str);
    $str = str_replace('http://youtu.be/', 'youtube-com/watch?v=', $str);

// это в конце функции
    $str = preg_replace_callback('!youtube\-com\/watch\?v=([a-z\d\-_]+)([^\s|\[]+)?!si',
        'youtube_video',
        $str.' ');
    $str = preg_replace_callback('!youtube\-com\/index\?[^\?]+\?v=([a-z\d\-_]+)([^\s|\[]+)?!is',
        'youtube_video',
            $str.' ');
    $str = preg_replace_callback('!youtube\-com\/watch\?v=([a-z\d\-_]+)([^\s|\[]+)?!si',
        'youtube_video',
        $str.' ');
    $str = preg_replace_callback('!&lt;iframe.*?youtube\-com/embed/([a-z\d\-_]+).*?&lt;/iframe&gt;!is',
            'youtube_video',
            $str.' ');

обрабатываем
function youtube_video($url){
    $wd = browser_type();
    if($wd['type']!=0){

        return '<div style="border: 1px solid #eee; background: #000; color: #fff;width:'.$wd['x'].'px; border-radius: 6px; padding: 2px;"><div style="border-radius: 4px; margin: 3px; text-align: center; padding: 3px; font-weight: bold; cursor:pointer;"  onclick="var _vd=this.parentNode.getElementsByTagName(\'div\')[1];if(_vd.style.display==\'none\'){_vd.style.display=\'\';}else{_vd.style.display=\'none\';}">Видео</div>
        <div style="display:none;">
        <video width="'.$wd['x'].'" height="'.$wd['y'].'" id="player1" preload="none">
                	<source type="video/youtube" src="http://www.youtube.com/watch?v='.$url[1].'" />
                </video>
                <script>
                    $(\'video\').mediaelementplayer({
                    	success: function(media, node, player) {
                    		$(\'#\' + node.id + \'-mode\').html(\'mode: \' + media.pluginType);
                    	}
                    });
                </script></div></div>';
    }else{
        return '<div style="border: 1px solid #eee; background: #000; color: #fff; border-radius: 6px; text-align: center; padding: 5px; font-weight: bold;">Видео недоступно для телефона</div>';
    }
}


function vk_video($string){
    $wd = browser_type();
        preg_match('|&lt;iframe src=&quot;(.*)&quot;(.*)&lt;/iframe&gt;|is', $string, $frame);
        preg_match_all('#(oid=[\d]+|id=[\d]+|hash=[\da-z]+)#i', $frame[1], $video_param);
        if($video_param[1][0]!='' AND $video_param[1][1]!='' AND $video_param[1][2]!=''){
            if($wd['type']==2){
            $string = str_replace($frame[0], '<div style="border: 1px solid #eee; background: #000; color: #fff;width:'.$wd['x'].'px; border-radius: 6px; padding: 2px;"><div style="border-radius: 4px; margin: 3px; text-align: center; padding: 3px; font-weight: bold; cursor:pointer;"  onclick="var _fr=this.parentNode.getElementsByTagName(\'iframe\')[0];if(_fr.style.display==\'none\'){_fr.style.display=\'\';}else{_fr.style.display=\'none\';}">Видео</div><iframe style="display:none;" src="http://vk.com/video_ext.php?'.$video_param[1][0].'&amp;'.$video_param[1][1].'&amp;'.$video_param[1][2].'&amp;hd=1" width="'.$wd['x'].'" height="'.$wd['y'].'" frameborder="0"></iframe></div>', $string);
        }else{
                $string = str_replace($frame[0], '<div style="border: 1px solid #eee; background: #000; color: #fff; border-radius: 6px; text-align: center; padding: 5px; font-weight: bold;">Видео недоступно для телефона</div>', $string);
            }
    }
    return $string;
}

тут вывод плеера ютьюба заменяйте на свой, т.к. я использую отдельный плеер на сайте.
_____________
вспомогательная php функция определения размера фрейма
function browser_type(){
    if(isset($_COOKIE['browser_type'])){
        if($_COOKIE['browser_type']==2){
            return array('x' => 640, 'y' =>340, 'type' => 2);
        }else if($_COOKIE['browser_type']==2){
            return array('x' => 460, 'y' =>280, 'type' => 1);
        }else{
            return array('x' => 0, 'y' =>0);
        }
    }else{
        return array('x' => 0, 'y' =>0, 'type' => 0);
    }
}

вспомогательная js функция определения размера фрейма видео
function BrowserType(){
    var BrowserType = getCookie('browser_type');
   if(BrowserType == '' || BrowserType == undefined){
       if(window.screen.width >= 800){
           setCookie('browser_type', 2, 300, '/');
       }else if(window.screen.width > 460){
                  setCookie('browser_type', 1, 3600, '/');
       }else{
           setCookie('browser_type', 0, 300, '/');
       }
   }
}

 /*****    AUTOSTART    *****/
$(document).ready(function(){
   BrowserType();
});

________
а ни кто и не говорил, что будет легко)))
.
// это в конце функции
    $str = preg_replace_callback('!youtube\-com\/watch\?v=([a-z\d\-_]+)([^\s|\[]+)?!si', 'youtube_video', $str.' '); //-- Повтор ???
    $str = preg_replace_callback('!youtube\-com\/index\?[^\?]+\?v=([a-z\d\-_]+)([^\s|\[]+)?!is', 'youtube_video', $str.' ');
    $str = preg_replace_callback('!youtube\-com\/watch\?v=([a-z\d\-_]+)([^\s|\[]+)?!si', 'youtube_video', $str.' '); //-- Повтор ???
    $str = preg_replace_callback('!&lt;iframe.*?youtube\-com/embed/([a-z\d\-_]+).*?&lt;/iframe&gt;!is', 'youtube_video',

Почему повторяются ? Наверное одна строка должна была быть так?
$str = preg_replace_callback('!youtube\-com\/watch\?v=([a-z\d\-_]+)([^\s|\[|<]+)?!si', 'youtube_video', $str.' ');

======================
тут вывод плеера ютьюба заменяйте на свой, т.к. я использую отдельный плеер на сайте.

А по подробнее ?
Я никогда ещё не пользовал свой плеер на сайте.
Допустим сам флеш плеер есть, но как вывод сделать ?
.
В смысле того, если я правильно понял, ютубовское видео идёт через свой плеер ???
.
Lexxs (17.06.2012/14:23)
В смысле того, если я правильно понял, ютубовское видео идёт через свой плеер ???
просто замени на код фрейма который дает ютьюб (который раньше у тебя был), я его не использую, скопипастил у себя без исправлений просто
_______
з.ы. повторную строку удали
.
вспомогательная js функция определения размера фрейма видео

У меня с этой функцией сайт падает почему то.
Закоментил, выдаёт:
Видео недоступно для телефона
Всего: 291