Переделаем модуль 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 $skin = $params->get( 'skin' ); $bgColour = $params->get( 'bgColour' ); $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}.
Скачать модуль JWPlayer для Joomla можно по ссылке (модуль пригодится своими исходниками для создания плагина).
Если вы заметили ошибки или неточности, сообщите пожалуйста в комментариях. Если понадобится готовый архив плагина — сообщите там же, в комментариях.
Спасибо! Очень нужен готовый архив плагина! А уж как для joomla 1.7 нужен- так это слов нет! Наталия
Привет, думаю для Joomla 1.7 надо поискать решение по-свежее, например, этот плагин для флэш-плеера — JPlayer: extensions.joomla.org/ext...management/10521, либо что-то подобное из той же категории.
Это не код а тихий ужас. Автор, зачем тебе переменные $fullscreen, $listPosition, $fullscreen, $btnColour, $bar, $frontcolor, $backcolor, если они НИГДЕ в коде не используются. На кой черт это $plaUrl надо — тоже непонятно.
s1.addParam(«allowfullscreen»,"true");
Почему всегда true? А если надо false?
Я задолбался править и переписал с нуля.
Спасибо Ден за дельные замечания, пофиксил пост кроме s1.addParam («allowfullscreen»,"true"); — думаю, кому надо false допишут радиокнопку в настройки.
Я уже молчу о том, что в коде нет закрывающего тега PHP.
Сорри за столь резкую критику, Кирилл. Я думаю, что далеко не все, кто читает эту статью в состоянии выловить баги в коде. И по-моему стоит выложить архив с готовым плагином.
Да все ок, просто я не планировал выкладывать архив, вряд ли сейчас вспомню как его собрать если не жаль свою версию, то присылай (почта есть на странице о сайте) и я выложу.
а превьюшку каким тэгом вставить можно?