Создание плагина флэш-плеера (flash-player) для Joomla

Переделаем модуль flash-плеера для Joomla в плагин, по пути несколько упростив его.
Ниже дан код основного файла плагина. Содержимое XML-файла редактируется по аналогии с любым контент-плагином или используя руководство по созданию content плагина для Joomla.

<?php
 
// Запрещаем прямое обращение к файлу
defined( '_JEXEC' ) or die( 'Restricted access' );
 
// Включаем метод registerEvent для отслеживания нужного события — работа плагина начнется до вывода контента.
$mainframe->registerEvent( 'onPrepareContent', 'plgContentJWPlayer' );
 
// Основная функция
function plgContentJWPlayer( &$row, &$params, $page=0 )
{
	// Простая проверка наличия на странице вызова плагина
	if ( JString::strpos( $row->text, '{jwplayer' ) === false ) 
	{
		return true;
	}
 
	// Получаем информацию о плагине
 	$plugin =& JPluginHelper::getPlugin('content', 'jwplayer');
	// Создаем объект с параметрами плагина	
	$params = new JParameter( $plugin->params );
	// Читаем настройки вида плеера из jwplayer.xml
	$backcolor	=	$params->get( 'bgColour' );
	$frontcolor	=	$params->get( 'btnColour' );
	$bar		=	$params->get( 'barPosition' );
	$skin		=	$params->get( 'skin' );
	$bgColour   =   $params->get( 'bgColour' ); 
    $btnColour  =   $params->get( 'btnColour' );
	$fullscreen =   $params->get( 'fullscreen' );
	$listPosition = $params->get( 'listPosition' );
	$playlistSize = $params->get( 'playlistSize' );
 
	// Ищем тег jwplayer и его атрибуты
	$regex = '/{jwplayer\s*(.*?)}\s*(.*?){\/jwplayer}/i';
 
	// Производим замену
	$row->text = preg_replace_callback( $regex, 'plgContentJWPlayer_replacer', $row->text );
 
	return true;
}
 
function plgContentJWPlayer_replacer( &$matches ) //Передаем по ссылке строку найденных атрибутов
{
	static $c; // Инициализируем переменную-счетчик количества включений плеера
 
	if(empty($matches[1]))
	{
		$width = 320; // Дефолтные ширина и высота плеера, если в атрибутах их нет
		$height = 240; 
	}
	else
	{
		$atributes = explode(' ', $matches[1]);	// Разбираем строку атрибутов с пробелом в качестве разделителя
 
		for($i=0; $i<3; $i++) // Максимум три параметра, присваиваем значения
		{
			if(eregi('w:', $atributes[$i]))
				$width = substr($atributes[$i], 2); // 0==w, 1==:
			if(eregi('h:', $atributes[$i]))
				$height = substr($atributes[$i], 2);
		}
	}
    // Устанавливаем пути к папкам плагина и плеера
	$baseUrl = JURI::base();
	$plgUrl = $baseUrl.'plugins/content/';
	$plaUrl = $baseUrl.'plugins/content/jwplayer/';
 
	$text = $matches[2]; // Третий параметр — путь к файлу ролика
 
	// Формируем контейнер с плагином, передавая ему параметры
	$text = '<div class="'.$skin.'" id="player'. ++$c .'">Скачайте и установите, пожалуйста, <a href="http://www.macromedia.com/go/getflashplayer">Flash Player</a> для просмотра этого видео-ролика.</div>
		<script type="text/javascript" src="plugins/content/jwplayer/swfobject.js"></script>
		<script type="text/javascript">
			var s1 = new SWFObject("'.$plgUrl.'jwplayer/player.swf","ply","'. $width .'","'. $height .'","9","#'.$bgColour.'");
			s1.addParam("allowfullscreen","true");
			s1.addParam("allowscriptaccess","always");
			s1.addVariable("file", "'.$baseUrl.$text.'"); /* найденный путь к файлу */
			s1.addVariable("skin","'.$plgUrl.'jwplayer/skins/simple.swf");
			s1.write("player'. $c .'");
		</script>';
 
		return $text;
}

Использование плагина

Не используя визуальный редактор типа TinyMCE, поместите в код страницы следующие теги: {jwplayer w:352 h:288}media/video.flv{/jwplayer}.

Если вы заметили ошибки или неточности, сообщите пожалуйста в комментариях. Если понадобится готовый архив плагина — сообщите там же, в комментариях.


Добавление комментария:

Вы можете использовать эти теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">