Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

[ошибка где-то в коде] Плагин быстрого кода для интеграции iframe и видео

306
24 марта 2011 года
order.daemon
275 / / 11.05.2007
Решил немного упростить себе жизнь и написать плагин который бы вставлял рамку YouTube и указанным мною видео.

Исходные данные:
<iframe width="425" height="349" src="http://www.youtube.com/embed/GGGGGGGGGG" frameborder="0" allowfullscreen></iframe>

результат:
{video}GGGGGGGGGG{/video}

Вот что удалось накрапать:

Код:
<?php
defined( '_JEXEC' ) or die( 'Restricted access' );

$mainframe->registerEvent( 'onPrepareContent', 'plgYouTube' );

function plgYouTube( &$row, &$params, $page=0 ){
   
    $plugin =& JPluginHelper::getPlugin('content', 'youtube');
    $pluginParams = new JParameter( $plugin->params );

    $regex = '/{video}(.*){\/video}/iU';

    if ( !$pluginParams->get( 'enabled', 1 ) ) {
        $row->text = preg_replace( $regex, '', $row->text );
        return true;
    }
   
    preg_match_all( $regex, $row->text, $matches );
   
    $count = count( $matches[0] );
   
    if ( $count ) {
        for ( $i=0; $i < $count; $i++ )
        {
            $video = renderVideo($matches[1][$i], $pluginParams);
            $row->text  = preg_replace( $regex, $video, $row->text, 1);
        }
    }
}

function renderVideo($youtubeid, $params) {
   
    $html = '';

    if ($useswfobject == 1) {
       
        $html .= '<iframe width="560" height="349" src="http://www.youtube.com/embed/' . $query . '" frameborder="0" allowfullscreen>';
        $html .= '</iframe>';
    }
   
    return $html;

}

}


а теперь вопрос, что не так?
244
24 марта 2011 года
UAS
2.0K / / 19.07.2006
Мои глаза! О_О Joomla будет похуже любого ночного кошмара.

 
Код:
function renderVideo($youtubeid, $params) {
   
    $html = '';

    if ($useswfobject == 1) {

Собственно, а где объявлена $useswfobject?
306
24 марта 2011 года
order.daemon
275 / / 11.05.2007
ну PHP я только учу и Joomla мне показалась самой открытой и простой для стороннего вливания:

$useswfobject = $params->get('useswf');;

и того получаеться:

<?php
defined( '_JEXEC' ) or die( 'Restricted access' );

$mainframe->registerEvent( 'onPrepareContent', 'plgYouTube' );

function plgYouTube( &$row, &$params, $page=0 ){

$plugin =& JPluginHelper::getPlugin('content', 'youtube');
$pluginParams = new JParameter( $plugin->params );

$regex = '/{video}(.*){\/video}/iU';

if ( !$pluginParams->get( 'enabled', 1 ) ) {
$row->text = preg_replace( $regex, '', $row->text );
return true;
}

preg_match_all( $regex, $row->text, $matches );

$count = count( $matches[0] );

if ( $count ) {
for ( $i=0; $i < $count; $i++ )
{
$video = renderVideo($matches[1][$i], $pluginParams);
$row->text = preg_replace( $regex, $video, $row->text, 1);
}
}
}

function renderVideo($youtubeid, $params) {

$useswfobject = $params->get('useswf');;

$html = '';

if ($useswfobject == 1) {

$html .= '<iframe width="560" height="349" src="http://www.youtube.com/embed/' . $query . '" frameborder="0" allowfullscreen>';
$html .= '</iframe>';
}

return $html;

}

}
306
24 марта 2011 года
order.daemon
275 / / 11.05.2007
Все равно не работает ;(
попробовал сократить запись.
Просто не могу понять как получить значенение которое ввел пользователь.

в результате наворотов получил:

Код:
<?php
defined( '_JEXEC' ) or die( 'Restricted access' );

$mainframe->registerEvent( 'plgYouTube' );

function plgYouTube( &$row, &$params, $page=0 ){

$plugin =& JPluginHelper::getPlugin('content', 'youtube');
$pluginParams = new JParameter( $plugin->params );

$regex = '/{video}(.*){\/video}';

if ( !$pluginParams->get( 'enabled', 1 ) ) {
$row->text = preg_replace( $regex, '', $row->text );
return true;
}

function renderVideo($youtubeid, $params) {

$useswfobject = $params->get('useswf');;

$html = '';

if ($useswfobject == 1) {

$html .= '<iframe width="560" height="349" src="http://www.youtube.com/embed/' . $youtubeid . '" frameborder="0" allowfullscreen>';
$html .= '</iframe>';
}

return $html;

}

}
306
24 марта 2011 года
order.daemon
275 / / 11.05.2007
разковырял плагин и собрал свой, все работате вот только видео вставляется в самый верх, даже выше заголовка страницы, а как его показать вставить в то место куда вставили youtube=dddd

Код:
<?php
defined( '_JEXEC' ) or die( 'Restricted access' );
jimport( 'joomla.plugin.plugin' );
class plgContentYouTube extends JPlugin
{

    function plgContentYouTube( &$subject, $params )
    {
        parent::__construct( $subject, $params );
    }

    function onPrepareContent( &$article, &$params, $limitstart )
        {
        global $mainframe;
   
        if ( JString::strpos( $article->text, 'youtube' ) === false ) {
        return true;
        }
       
        $article->text = preg_replace('|(youtube=([a-zA-Z0-9_-]+))|e', '$this->videoId("\2")', $article->text);
   
        return true;
    }
    function videoId( $vCode )
    {
        $plugin =& JPluginHelper::getPlugin('content');
        $params = new JParameter( $plugin->params );

        $width = $params->get('width', 560);
        $height = $params->get('height', 349);
       
        echo '<div id="video" style="text-align:center"><iframe width="'.$width.'" height="'.$height.'" src="http://www.youtube.com/embed/'.$vCode.'" frameborder="0" allowfullscreen></iframe></div>';

    }
}
306
24 марта 2011 года
order.daemon
275 / / 11.05.2007
 
Код:
echo '<div id="video" style="tex


изменил на

 
Код:
return '<div id="video" style="tex


и все заработало! Ура!

В общем склеил то что нужно, теперь работать будет легче :p
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог