Вставка видео через ссылку Youtube, mp4, avi, webm, flv и т.д.(Готовое решение)

Поддержка видео для таких сайтов как:
  • youtube.com
  • vimeo.com
  • rutube.ru
  • coub.com
  • ok.ru
  • vk.com
  • dailymotion.com

Для: LS 1.0.3

В /engine/modules/text/Text.class.php

Меняем функцию public function VideoParser($sText)

На это:
public function VideoParser($sText) {
		
		// Размеры и атрибуты окна вставленного видео.
        $iWidth = 620;
        $iHeight = 360;
        $iAlign = "center";
        $sIframeAttr = 'frameborder="0" webkitAllowFullScreen mozallowfullscreen allowfullscreen="allowfullscreen"';
		/**
         * youtube.com fixed
         */
        $sText = preg_replace(
        '/<video>(?:http(?:s|):|)(?:\/\/|)(?:www\.|m.|)youtu(?:\.|)be(?:-nocookie|)(?:\.com|)\/(?:e(?:mbed|)\/|v\/|watch\?(?:.+&|)v=|)([a-zA-Z0-9_\-]+?)(&.+)?<\/video>/Ui',
        '<div align="'.$iAlign.'"><iframe width="'.$iWidth.'" height="'.$iHeight.'" '.$sIframeAttr.' src="//www.youtube.com/embed/$1?modestbranding=1&" frameborder="0" allowfullscreen ></iframe></div>',
        $sText
        );
		/**
         * vimeo.com fixed
         */
        $sText = preg_replace(
		    '/<video>http(?:s|):\/\/(?:www\.|)vimeo\.com\/(\d+).*<\/video>/i',
            '<div align="'.$iAlign.'"><iframe src="//player.vimeo.com/video/$1" width="'.$iWidth.'" height="'.$iHeight.'" '.$sIframeAttr.'></iframe></div>',
            $sText
        );
		/**
         * rutube.ru fixed
         */
        $sText = preg_replace(
            '/<video>http(?:s|):\/\/(?:www\.|)rutube\.ru\/tracks\/(\d+)\.html.*<\/video>/Ui',
            '<div align="'.$iAlign.'"><iframe src="//rutube.ru/play/embed/$1" width="'.$iWidth.'" height="'.$iHeight.'" '.$sIframeAttr.'></iframe></div>',
            $sText
        );
        $sText = preg_replace(
            '/<video>http(?:s|):\/\/(?:www\.|)rutube\.ru\/video\/(\w+)\/?<\/video>/Ui',
            '<div align="'.$iAlign.'"><iframe src="//rutube.ru/play/embed/$1" width="'.$iWidth.'" height="'.$iHeight.'" '.$sIframeAttr.'></iframe></div>',
            $sText
        );
		/**
	    * coub.com fixed
	    */
	    $sText = preg_replace(
		    '/<video>http(?:s|):\/\/(?:www\.|)coub\.com\/view\/(\w+).*<\/video>/i', 
		    '<div align="'.$iAlign.'"><iframe src="//coub.com/embed/$1?muted=false&autostart=false&originalSize=false&hideTopBar=false&noSiteButtons=false&startWithHD=false" width="'.$iWidth.'" height="'.$iHeight.'" '.$sIframeAttr.'></iframe></div>', 
		$sText
		);
		/**
	    * ok.ru fixed
	    */
	    $sText = preg_replace(
		    '/<video>http(?:s|):\/\/(?:www\.|)ok\.ru\/video\/(\w+).*<\/video>/i', 
		    '<div align="'.$iAlign.'"><iframe src="//ok.ru/videoembed/$1" width="'.$iWidth.'" height="'.$iHeight.'" '.$sIframeAttr.'></iframe></div>', 
		$sText
		);
		/**
	    * vk.com HASH not working, embeded link only
	    */
		$sText = preg_replace(
		    '/<video>(https:\/\/(?:www\.|)vk\.com\/video_ext\.php.*)<\/video>/i', 
			'<div align="'.$iAlign.'"><iframe src="$1" width="'.$iWidth.'" height="'.$iHeight.'" '.$sIframeAttr.'></iframe></div>', 
		$sText
		);
            /**
	    * dailymotion.com fixed
	    */
	    $sText = preg_replace(
		    '/<video>http(?:s|):\/\/(?:www\.|)dai\.ly\/(\w+).*<\/video>/i', 
		    '
<div align="'.$iAlign.'"><iframe src="//dailymotion.com/embed/video/$1" width="'.$iWidth.'" height="'.$iHeight.'" '.$sIframeAttr.'></iframe></div>', 
		$sText
		);
		return $sText;
	}

Конечно же в /config/jevix.php добавляем нехватающие сайты.

Свои параметры сюда:
// Размеры и атрибуты окна вставленного видео.
        $iWidth = 620;
        $iHeight = 360;
        $iAlign = "center";
        $sIframeAttr = 'frameborder="0" webkitAllowFullScreen mozallowfullscreen allowfullscreen="allowfullscreen"';


Готово!

3 комментария

avatar
При выходе HTML5 появилась возможность вставлять любое видео через ссылку. Добавим код в файле /engine/modules/text/Text.class.php
Перед:
/**
         * youtube.com fixed
         */

этот код:
/**
		* любое видео
		*/		
		$sText = preg_replace('/<vid>(.*)<\/vid>/Ui', '<div align="'.$iAlign.'">
		<video width="95%" controls="controls">
<source type="video/webm" src="$1" preload="auto"></source>
<source type="video/mp4" src="$1" preload="auto"></source>
<source type="video/avi" src="$1" preload="auto"></source>
<source type="video/ogg" src="$1" preload="auto"></source>
<source type="video/flv" src="$1" preload="auto"></source>
<source type="video/3gp" src="$1" preload="auto"></source>
<p>Ваш пользовательский агент не поддерживает элемент HTML5 Video</p>
</video>
		</div>',
		$sText
		);


Теперь добавим тег «vid» в /config/jevix.php

Смотря что вы используете TinyMCE или markitUP, добавляя кнопку VID в редактор по аналогии с кнопкой VIDEO заменив его на VID.

markitUP /engine/lib/internal/template/js/settings.js
вот так:
{name: ls.lang.get('panel_vid'), className:'editor-vid', replaceWith:'<vid>[!['+ls.lang.get('panel_vid_promt')+':!:http://]!]</vid>' },

Стиль кнопки: /engine/lib/external/jquery/markitup/sets/default/style.css
.markItUp .editor-vid a 		{ background-image:url(images/vid.png); }


Картинку в google найдите 16х16 png. Кидаем сюда

/engine/lib/external/jquery/markitup/sets/default/images/

Готово. Не забываем чистить кэш.
avatar
Годное решение. Но я бы еще добавил несколько строк для для автоматизации чистки кэша. Есть плагин которыей автоматом запускает cron или аналог для ливстрита. Ну другими словами кэш чистится или обнуляется(кому как больше нравится) по заданным параметрам. Быстро и удобно. В первый запуск может не сработать автомат, надо будет вручную. А потом работает как часы. Так сделано на портале для снятия позиций в google ну и не только для этого конечно. Кэшируется очень быстро и без crona было бы непросто
avatar
Внимание! К этому добавлению никакого крона не надо! После редактирования файлов, достаточно почистить кэш один раз. Всё.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.