Безболезненная интеграция uppod

Почти с самого мая 2009 (0.3) мы медленно и нехотя изменяем функционал милого локального сайтика mycrap.ru

Сейчас я расскажу о самом простом способе вставки видео в посты, которого здесь не находил. Изначально была сделана своя форма загрузки для видео на базе стандартного /include/ajax/uploadImg.php, которая загружала файл и выдавала в окно поста код uppod-плеера строчек в 5, при этом пользователи могли хулиганить изменяя размер плеера и подсовывая свои листы стилей.

Проще всего (не правильнее, а именно проще всего) поправить системный файл /classes/modules/sys_text/Text.class.php.

Сперва загрузим сам плеер с uppod.ru, сделаем к нему стили и положим их рядышком. Моя структура файлов выглядит так:

но класть их можно куда угодно. Не забываем про crossdomain.xml, лучше внимательно прочитать инструкцию к uppod.

Сперва добавим к $this->oJevix->cfgAllowTags, $this->oJevix->cfgSetTagNoTypography и $this->oJevix->cfgSetTagPreformatted новый тег «audio», он будет использоваться для аудио-плеера.

Потом заменим парсеры стандартного тега video на свой. Внимание! Как только мы это сделаем, перестанет вставляться (уже опубликованное будет показываться по-прежнему) старым способом видео с РуТуба (невелика потеря) и других сервисов, если они были дополнительно настроены. Хочется этого избегать — сделайте свой тег для видео, к примеру myvideo.

public function VideoParser($sText) {	
		/**
		* любое аудио
		*/		
		$sText = preg_replace('/<audio>(.*)<\/audio>/Ui', '<object width="300" height="80"><param name="wmode" value="opaque"></param><param name="movie" value="http://ПУТЬ_К_ПЛЕЕРУ/player.swf"></param><param name="flashvars" value="comment=&st=http://ПУТЬ_К_СТИЛЮ_АУДИЛПЛЕЕРА/audio.txt&file=$1"></param><embed src="http://ПУТЬ_К_ПЛЕЕРУ/player.swf" type="application/x-shockwave-flash" allowscriptaccess="always" wmode="transparent" flashvars="comment=&st=http://ПУТЬ_К_СТИЛЮ_АУДИЛПЛЕЕРА/audio.txt&file=$1" width="300" height="80"></embed></embed></object>', $sText);			
		/**
		* любое видео
		*/		
		$sText = preg_replace('/<video>(.*)<\/video>/Ui', '<object width="560" height="340"><param name="wmode" value="opaque"></param><param name="allowFullScreen" value="true"></param><param name="movie" value="http://ПУТЬ_К_ПЛЕЕРУ/player.swf"></param><param name="flashvars" value="comment=&st=http://ПУТЬ_К_СТИЛЮ_ВИДЕОПЛЕЕРА/video.txt&file=$1&"></param><embed src="http://ПУТЬ_К_ПЛЕЕРУ/player.swf" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" wmode="transparent" flashvars="comment=&st=http://ПУТЬ_К_СТИЛЮ_ВИДЕОПЛЕЕРА/video.txt&file=$1&" width="560" height="340"></embed></embed></object>', $sText);
		return $sText;		
	}


Не забываем прописать пути и размеры плеера.

Таким нехитрым образом любая обрамленная этими тегами ссылка на файл после публикации предстанет прекрасным флеш-плеером. Более того, начиная с версии 0.6 uppod умеет вставлять видео с YouTube, достаточно поместить в теги ссылку на страницу с видео. Другие сервисы пока не могут себе позволить oEmbed и для этого надо использовать способы с видео-парсерами, неоднократно тут описанные.

Вживую это можно посмотреть на указанном в начале сайте, там также реализована локальная загрузка аудио и видео с помощью косметически измененного MyFiles.

10 комментариев

avatar
у меня вопрос как сделать так чтобы при открытие страницы с видео, оно не сразу воспроизводилось, а только когда нажмешь плей?
avatar
avatar
Спасибо огромное!!!
avatar
Сколько искал не находил этого топика. Спасибо тебе ptath, работает все отлично!
avatar
Здорово, спасибо
avatar
в парсере не забываем добавить allowfullscreen=«true», дабы не наслаждаться при попытке просмотра видео во весь экран ошибкой 2152 :)
avatar
Всё сделал, работает как часы. Ситуация была/есть такая, что есть один основной хостинг с сайтом и есть иностранный с большим количеством свободного места. В результате на основном сайте реализовал плеер, который «хавает» файлы с иностранного хостинга. Именно для того чтобы это было возможно и нужен crossdomain.xml (это я не кап. очев., просто для новичков решил рассказать, то что сам искал и читал), подробнее здесь есть об этом uppod.ru/talk_189 — соль в том, чтобы с моего иностранного хостинга не могли другие паразиты себе таким же образом вставлять видео.
Собственно, crossdomain.xml у меня так выглядит:
<?xml version="1.0" encoding="UTF-8"?>
<cross-domain-policy>
<allow-access-from domain="*.site.ru" to-ports="80"/>
<allow-access-from domain="site.ru" to-ports="80"/>
</cross-domain-policy>

Ещё раз напоминаю, этот файл кладётся ТУДА, где хранится плеер (*.swf файл), в моём случае — иностранный хостинг.

также не трогал тэг «video», а просто добавил «audio» и «videot».

автору поста спасибо за инструкции.
avatar
Спасибо за инструкцию, но, видимо, что-то я не допонял… В этом топике описал суть проблемы, а то комментарий получился бы слишком длинным. Заранее спасибо за помощь.
avatar
почему то tinymce превращает код
<object type="application/x-shockwave-flash" data="http://itvcom.ru/files/flash/uppod.swf" width="440" height="330" id="player"><param name="wmode" value="opaque"></param>
	<param name="allowFullScreen" value="true"></param>
	<param name="allowScriptAccess" value="always"></param>
	
	<param name="movie" value="http://itvcom.ru/files/flash/uppod.swf"></param>
	<param name="FlashVars" value="pl=XgBUwtIZkmsUb2YZdSGpbSucdC4TY7L9v3fQ6xRh6joGY2N8Y5NUYjLcY5BLY5oevjLcYj6m6jH9w5cq&st=XgBUwtIZkmsUb2YZdSGpbSujwW6ZbaRcdmi9v3eQkVYU13Ts"></param>
</object>

в
<object height="330" width="440" type="application/x-shockwave-flash" data="http://itvcom.ru/files/flash/uppod.swf"><param name="wmode" value="opaque"></param>
	<param value="opaque" name="wmode">
	<param value="http://itvcom.ru/files/flash/uppod.swf" name="data">
	<param value="true" name="allowFullScreen">
	<param value="always" name="allowScriptAccess">
	<param value="pl=XgBUwtIZkmsUb2YZdSGpbSucdC4TY7L9v3fQ6xRh6joGY2N8Y5NUYjLcY5BLY5oevjLcYj6m6jH9w5cq&amp;amp;st=XgBUwtIZkmsUb2YZdSGpbSujwW6ZbaRcdmi9v3eQkVYU13Ts" name="FlashVars">
	<param value="http://itvcom.ru/files/flash/uppod.swf" name="src">
</object>

после чего плеер не работает
кто-нибудь знает как пофиксить?
avatar
убрать переносы строк. Как только уберешь все \n и \r с текста — сраз будет плеер.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.