Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Блог » Правильная интеграция Uppod в DLE 9.7 на основе AdequateBBcode

Правильная интеграция Uppod в DLE 9.7 на основе AdequateBBcode


 ПафНутиЙ    27.01.2013    uppod, dle 9.7, интеграция    Блог    21479    60 комментариев

Правильная интеграция Uppod в DLE 9.7 на основе AdequateBBcode

Нужно интегрировать Uppod плеер в DLE 9.7? Тогда эта статья для вас!
С установкой справится любой, при этом стандартный функционал DLE не изменится.

Интеграция представят из себя добавление специальной кнопки "uppod", которая имеет собственный обработчик и не нарушает стандартные теги video, media и mp3.
Для упрощения интеграции я взял за основу уже имеющийся, нормальный BBcode-редактор AdequateBBcode.

Версия DLE: 9.7
Автор модификации: ПафНутиЙ
Модификация: AdequateBBcode+Uppod
Официальный сайт плеера Uppod
Скачать необходимые файлы

Особенности реализации работы с плеером


  • Не портит существующий функционал (отдельная кнопка для вставки медиа через uppod).
  • Удобная кастомизация плеера (скины аудио и видео лежат в папке шаблона, и легко меняются на собственные).
  • Можно задавать размер плеера, название композиции, картинку-заглушку. Из обязательных параметров только ссылка на видео или аудио. Размер плеера по умолчанию задаётся в CSS.
  • Не нужно ставить два плеера для видео и аудио, музыка поддерживаемых плеером расширений (mp3, ogg, aac) определяется автоматически и подгружается нужный плеер.


Внешний вид


Небольшая видео-демонстраця (рекомендую смотреть в нормальном качестве):


Новая кнопка в форме добавления и редактирования новостей с сайта (справа от YouTube)
Правильная интеграция Uppod в DLE 9.7 на основе AdequateBBcode


Внешний вид видео и аудио в новости (из имеющихся в комплекте стилей плеера)
Правильная интеграция Uppod в DLE 9.7 на основе AdequateBBcode


Установка

  1. Сделать резервную копию файлов engine/modules/bbcode.php, engine/ajax/bbcode.php, engine/classes/parce.class.php, language/Russian/website.lng, bbcodes/color.html.
  2. Залить содержимое папки uploads из архива в корень сайта (если требутся - изменить название шаблона на свой).
  3. Открыть main.tpl и перед </head> прописать:
    <link media="screen" href="{THEME}/style/bbcodes.css" type="text/css" rel="stylesheet" />
    <script type="text/javascript" src="{THEME}/js/tooltip.js"></script>

  4. Открыть файл engine/classes/parce.class.php, найти:
    $source = preg_replace( "#\[media=([^\]]+)\]#ies", "\$this->build_media('\\1')", $source );

    Ниже вставить:
    /*** Подключение uppod плеера by ПафНутиЙ ***/
    $source = preg_replace( "#\[uppod=([^\]]+)\]#ies", "\$this->build_uppod('\\1')", $source );
    /*** Подключение uppod плеера by ПафНутиЙ ***/

    Далее найти:
    $txt = preg_replace( "#<!--dle_media_begin:(.+?)-->(.+?)<!--dle_media_end-->#is", '[media=\\1]', $txt );

    Ниже вставить:
    /*** Подключение uppod плеера by ПафНутиЙ ***/
    $txt = preg_replace( "#<!--dle_uppod_begin:(.+?)-->(.+?)<!--dle_uppod_end-->#is", '[uppod=\\1]', $txt );
    /*** Подключение uppod плеера by ПафНутиЙ ***/


    Далее найти:
    function build_url($url = array()) {


    ВЫШЕ вставить:
        /*** Подключение uppod плеера by ПафНутиЙ ***/
        function build_uppod($url) {
            global $config;
            if (!count($this->video_config)) {
                include (ENGINE_DIR . '/data/videoconfig.php');
                $this->video_config = $video_config;
            }

            $get_size = explode( ",", trim( $url ) );
            $sizes = array();

            if (count($get_size) == 2)  {
                $url = $get_size[1];
                $sizes = explode('x', trim( $get_size[0]));
                $width = intval($sizes[0]) > 0 ? intval($sizes[0]) : $this->video_config['width'];
                $height = intval($sizes[1]) > 0 ? intval($sizes[1]) : $this->video_config['height'];

                if (substr($sizes[0], - 1, 1 ) == '%') $width = $width."%";
                if (substr($sizes[1], - 1, 1 ) == '%') $height = $height."%";

            } else {
                $width = $this->video_config['width'];
                $height = $this->video_config['height'];
            }
        
            if($url == '') return;

            $option = explode('|', trim($url));

            $url = $this->clear_url($option[0]);

            $type = explode(".", $url);
            $type = strtolower(end($type));

            $decode_url = $url;

            if($option[1] != '') {            
                $option[1] = htmlspecialchars(strip_tags( stripslashes($option[1])), ENT_QUOTES, $config['charset']);
                $decode_url = $url.'|'.$option[1];    
            }
            if ($option[2] != '') {            
                $option[2] = htmlspecialchars(strip_tags( stripslashes($option[2])), ENT_QUOTES, $config['charset']);
                $decode_url = $url.'|'.$option[1].'|'.$option[2];    
            }

            $uppod_size = '';
            if ( count($sizes) == 2 ) {
                $decode_url = $width.'x'.$height.','.$decode_url;
                $uppod_size = 'style="width:'.$width.'px; height:'.$height.'px;"';
            }
            
            $preview = '';        
            if ($this->video_config['preview']) $preview = '&amp;poster={THEME}/uppod/preview.png';
            if ($this->video_config['startframe']) $preview = '';
            if($option[2] != '') $preview = '&amp;poster='.$option[2];

            $uppod_name = 'Noname';
            if($option[1] != '') $uppod_name = $option[1];

            $id_player = md5( microtime() );

            $player_type = '<param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" />';
            $style_type = 'style_video';

            if($type == 'ogg' or $type == 'mp3' or $type == 'aac') {
                $player_type = '';
                $style_type = 'style_audio';
                $preview = '';
            }
            
            return '<!--dle_uppod_begin:'.$decode_url.'-->
                    <object class="uppod_'.$style_type.'" id="uppod_video_'.$id_player.'" uid="uppod_video_'.$id_player.'" type="application/x-shockwave-flash" data="{THEME}/uppod/uppod.swf" '.$uppod_size.'>
                        <param name="bgcolor" value="#000000" />
                        '.$player_type.'
                        <param name="movie" value="{THEME}/uppod/uppod.swf" />
                        <param name="flashvars" value="comment='.$uppod_name.'&amp;st={THEME}/uppod/'.$style_type.'.txt&amp;file='.$url.$preview.'" />
                    </object>
                    <!--dle_uppod_end-->';
        
        }
        /*** Подключение uppod плеера by ПафНутиЙ ***/

  5. Открыть файл language/Russian/website.lng, найти:
    'wysiwyg_language'        =>  "ru",

    Ниже вставить:
    // Подключение uppod плеера by ПафНутиЙ
    'name_uppod'        => "Введите название видео (оно будет отображаться в плеере, если это предусмотренно скином)",
    'bb_t_uppod'        => "Вставка видео или аудио через Uppod плеер",

  6. Всё! Очищаем кеш браузера, кеш DLE и наслаждаемся )


Кастомизация плеера

  • Всё, что относится к плееру лежит в папке templates/YOUR_TEMPLATE/uppod (YOUR_TEMPLATE - заменить на имя своего шаблона)
  • Для изменения скина видео достаточно заменить содержимое файла uppodstyle_video.txt
  • Для изменения скина аудио достаточно заменить содержимое файла uppodstyle_audio.txt
  • В зависимости от типа плеера ему присваивается класс **uppod_style_video** или **uppod_style_audio** так что можно спокойно оформлять плеер через CSS.
  • Если не задана картинка-заглушка, то выведется деолтная uppod/preview.png (PSD этой картинки так же есть в архиве)


Важно!


Изменения редактора касаются только публичной части сайта, в админке редактор не изменится, но тег
[uppod=URL]
будет корректно обрабатываться и в админке.

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

sadan
Юзер

sadan - 28 января 2013 12:52 -

ПафНутиЙ ! Ты супер ! Спасибо !

shim
Юзер

shim - 28 января 2013 13:12 -

Спасибо !

shim
Юзер

shim - 28 января 2013 13:22 -

попробовал привязать админку...
открыл inserttag.php и добавил следующее

function tag_uppod()
{
    var thesel = get_sel(eval('fombj.'+ selField))

    if (!thesel) {
        thesel ='http://';
    }

    DLEprompt(text_enter_url, thesel, dle_prompt, function (r) {

        doInsert("[uppod="+r+"]", "", false);
        ie_range_cache = null;
    
    });
}


<div id="b_uppod" class="editor_button" onclick="tag_uppod()"><img title="$lang[bb_t_uppod]" src="engine/skins/bbcodes/images/uppod.gif" width="23" height="25" border="0"></div>

Работает, но не полностью.Как правельно интегрировать в админку, чтоб отрабатывало и "Введите название видео"???
И ещё.
Как задать размер плеера по умолчанию? В скине указан нужный размер,но если принудительно не указать - то он игнорится.

ПафНутиЙ
Админ

ПафНутиЙ - 28 января 2013 14:46 -

function tag_uppod() {
    var a = get_sel(eval("fombj." + selField));
    a || (a = "http://");
    DLEprompt(text_enter_url, a, dle_prompt, function (a) {
    DLEprompt(text_enter_name_uppod, "Noname", dle_prompt, function (b) {
      doInsert("[uppod=" + a +"|" + b + "]", "", !1);
      ie_range_cache = null
    })  
    })
}

этот код лежит в файлах bbcode.php

Каков вопрос - таков и ответ. Просто помните об этом.

shim
Юзер

shim - 1 февраля 2013 11:12 -

лежит, но как его заставить в админке работать ?

ПафНутиЙ
Админ

ПафНутиЙ - 2 февраля 2013 03:18 -

так он должен лежать и в файлах админки)

Каков вопрос - таков и ответ. Просто помните об этом.

shim
Юзер

shim - 2 февраля 2013 10:05 -

файл inserttag.php, добавляю
function tag_uppod() {
    var a = get_sel(eval("fombj." + selField));
    a || (a = "http://");
    DLEprompt(text_enter_url, a, dle_prompt, function (a) {
    DLEprompt(text_enter_name_uppod, "Noname", dle_prompt, function (b) {
      doInsert("[uppod=" + a +"|" + b + "]", "", !1);
      ie_range_cache = null
    })  
    })
}

Не работает
Добавляю просто переименованую function tag_youtube
function tag_uppod()
{
    var thesel = get_sel(eval('fombj.'+ selField))

    if (!thesel) {
        thesel ='http://';
    }

    DLEprompt(text_enter_url, thesel, dle_prompt, function (r) {

        doInsert("[uppod="+r+"]", "", false);
        ie_range_cache = null;
    
    });
}

ястественно работает , вставляет ссылку.
что не так я делаю с родной function tag_uppod ???

ПафНутиЙ
Админ

ПафНутиЙ - 2 февраля 2013 21:13 -

нужно смотреть js-ошибки. возможно что-то не так.

Каков вопрос - таков и ответ. Просто помните об этом.

shim
Юзер

shim - 3 февраля 2013 17:03 -


Uncaught ReferenceError: text_enter_name_uppod is not defined adminshim.php:458

TheImDim
Юзер

TheImDim - 28 января 2013 14:25 -

Что этот новый раздел "блог" дает? Пользователи смогут вести свой блог, или же только ты?

ПафНутиЙ
Админ

ПафНутиЙ - 28 января 2013 14:44 -

Пользователи тоже могут, но пока через меня (ПМ, icq и т.п.), это связанно с техническими моментами.
Если будет уникальная (копирайт думаю тоже прокатит) и главное интересная или полезная статья - она появится.

Каков вопрос - таков и ответ. Просто помните об этом.

carlsberg
Юзер

carlsberg - 28 января 2013 16:34 -

Привет сделал всё по инструкции, но всё равно отображается как виндовсе медиа плеер и не работает. И надо ли добавлять доп.поля?

ПафНутиЙ
Админ

ПафНутиЙ - 28 января 2013 19:19 -

Адрес сайта, логин и пароль для возможности добавить новость давайте, посмотрим.
Допполя не нужны.

Каков вопрос - таков и ответ. Просто помните об этом.

crysnik
Юзер

crysnik - 28 января 2013 21:48 -

а что поддерживается кроме youtube

shim
Юзер

shim - 28 января 2013 22:03 -

вот бы привязать к function build_media, чтоб работали все привязаные видеохосты.
в моём случае это (vimple.ru, prochan.com, yaplakal.com, youtube.com, kiwi.kz, kinopod.ru, 24video.net, moevideo.net, video.namba.kz,
videobb.com,redtube.com, liveleak.com, vk.com, xvideos.com, youtu.be,
vimeo.com, video.mail.ru, smotri.com, gametrailers.com)

ПафНутиЙ
Админ

ПафНутиЙ - 28 января 2013 23:18 -

crysnik,
Все, что поддерживает Uppod.
shim,
Посотрите исх код - в большинстве случаев это iframe, как буд то бы видео тупо встроили в страницу так, как это рекомендует соответствующих видеохостинг. Если это не так, я бы с радостью посмотрел бы на вашу function build_media и всёс бы изменения в интеграцию.

Каков вопрос - таков и ответ. Просто помните об этом.

shim
Юзер

shim - 28 января 2013 23:48 -

как показать Вам функцию?, пишет "Вы ввели слишком длинный комментарий."

ПафНутиЙ
Админ

ПафНутиЙ - 29 января 2013 01:30 -


Каков вопрос - таков и ответ. Просто помните об этом.

shim
Юзер

shim - 29 января 2013 01:46 -


ПафНутиЙ
Админ

ПафНутиЙ - 29 января 2013 09:25 -

мёртвая ссылка

Каков вопрос - таков и ответ. Просто помните об этом.

shim
Юзер

shim - 31 января 2013 22:21 -


ПафНутиЙ
Админ

ПафНутиЙ - 2 февраля 2013 03:19 -

там одни iframe, а iframe не поддерживаются плеером.

Каков вопрос - таков и ответ. Просто помните об этом.

carlsberg
Юзер

carlsberg - 29 января 2013 00:04 -

ПафНутиЙ,
ответил в лс

ПафНутиЙ
Админ

ПафНутиЙ - 29 января 2013 01:36 -

Ответил в лс, продублирую и тут, на будущее.
Плеер не поддерживает не указанные в его документации форматы видео. Будьте внимательнее )

Каков вопрос - таков и ответ. Просто помните об этом.

carlsberg
Юзер

carlsberg - 29 января 2013 03:11 -

спасибо большое)))

Axel
Юзер

Axel - 29 января 2013 06:58 -

Отличный плеер.
Скажите, можно ли на сайте с онлайн фильмами, на котором фильмы транслируются с vk.com, заметить плеер от vk на этот?

ПафНутиЙ
Админ

ПафНутиЙ - 29 января 2013 09:26 -

нет, плеер не поддерживает видео с ВК

Каков вопрос - таков и ответ. Просто помните об этом.

Axel
Юзер

Axel - 29 января 2013 11:56 -

Жаль. А вообще, все что я описал выше, все это возможно?

ПафНутиЙ
Админ

ПафНутиЙ - 29 января 2013 17:22 -

Возможно всё, что угодно, вопрос желания и умения исполнителя в сочетании с желанием и платежеспособностью заказчика ))

Каков вопрос - таков и ответ. Просто помните об этом.

DaivZ
Юзер

DaivZ - 31 января 2013 17:26 -


Как задать фиксированную высоту и ширину плеера , я то понимаю что должно брать с этих настроек:
include (ENGINE_DIR . '/data/videoconfig.php');

Но почему то:

ПафНутиЙ
Админ

ПафНутиЙ - 31 января 2013 19:47 -

задавайте ширину и высоту в CSS или в теге
[uppod=640x480,URL|Name]

Каков вопрос - таков и ответ. Просто помните об этом.

Fiks75
Юзер

Fiks75 - 31 января 2013 18:38 -

Поставил интеграцию на сайт. После этого сайт начал дольше загружаться. Размер плеера почему то нужно вручную прописывать. Нет связи с админкой.
ПафНутиЙ, вы можете четко ответить на предыдущий коммент, как задать фиксированный размер плеера?
Пока что вернулся к классической интеграции через правку одного файла parce.class.php.

Nick
Юзер

Nick - 31 января 2013 19:42 -

Цитата: Fiks75
вы можете четко ответить на предыдущий коммент, как задать фиксированный размер плеера?

Вместо
return '<!--dle_uppod_begin:'.$decode_url.'-->
                <object class="uppod_'.$style_type.'" id="uppod_video_'.$id_player.'" uid="uppod_video_'.$id_player.'" type="application/x-shockwave-flash" data="{THEME}/uppod/uppod.swf" '.$uppod_size.'>


Вставить
return '<!--dle_uppod_begin:'.$decode_url.'-->
                <object class="uppod_'.$style_type.'" id="uppod_video_'.$id_player.'" uid="uppod_video_'.$id_player.'" type="application/x-shockwave-flash" data="{THEME}/uppod/uppod.swf" style="width: 550px; height: 400px;">

где width: 550px; height: 400px; ширина и высота плеера соответственно.

ПафНутиЙ
Админ

ПафНутиЙ - 31 января 2013 19:59 -

Так неправильно делать, потому, что есть ещё аудио, и при добавлении аудио плеер будет такого же размера как и в видео, к тому же при установке нового скина придётся опять ковырять php.

Каков вопрос - таков и ответ. Просто помните об этом.

DaivZ
Юзер

DaivZ - 31 января 2013 19:56 -

Спасибо помогло

ПафНутиЙ
Админ

ПафНутиЙ - 31 января 2013 19:57 -

Как оказалось, я забыл добавить стили по умолчанию в CSS-файл.
Обновил архив, если желания качать весь архив нет, просто добавьте в любой css-файл эти строки:
/*Задаём размеры плееру Uppod, если они не заданы в теге*/
.uppod_style_video {
  width: 500px;
  height: 375px;
}
.uppod_style_audio {
    width: 500px;
    height: 60px;
}

Каков вопрос - таков и ответ. Просто помните об этом.

Fiks75
Юзер

Fiks75 - 1 февраля 2013 17:35 -

Спасибо. Теперь все работает.

shim
Юзер

shim - 1 февраля 2013 18:25 -

Прошу простить за повтор, но видать мои вопросы ушли в небытие
Как прикрутить к админке ?
https://dle-faq.ru/blog/4395-uppod-to-dle-97.html#comment-id-11299 с кнопкой понятно, а вот с function tag_uppod нет(
И как подружить с функцией function build_media
https://dle-faq.ru/blog/4395-uppod-to-dle-97.html#comment-id-11290

dj-avtosh
PHP-developer

dj-avtosh - 3 февраля 2013 02:32 -

Все ок, но когда ты братан научишься полностью проверять все используемые данные? Нотис нотисом, но все же это ошибка...

https://elkhan.ru
По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

ПафНутиЙ
Админ

ПафНутиЙ - 3 февраля 2013 14:06 -

А теперь по подробнее.

Каков вопрос - таков и ответ. Просто помните об этом.

preanik
Юзер

preanik - 7 февраля 2013 00:00 -

Здравствуйте!
Подскажите пожалуйста, как после данной интеграции можно добавить плейлист в видео плеер?
Плейлист для возможности выбора различных серий, например.

selfire
Юзер

selfire - 11 февраля 2013 21:37 -

Да я бы то же не отказался узнать

GrayZOR
Юзер

GrayZOR - 3 марта 2013 20:06 -

Привет всем! Если на сайте с Youtube видео стоят. Они примут стить Uppod-плеера? если установить! Спасибо!

volkod
Юзер

volkod - 12 марта 2013 01:34 -

будет ли для дле 9,8 то там налазит на текст а в чем проблема не понятно все перерыл не нашел в чем проблема

ПафНутиЙ
Админ

ПафНутиЙ - 12 марта 2013 01:46 -

preanik,
selfire,
Ручками ))) У плеера есть методы для работы с плейлистами.

GrayZOR,
да.

volkod,
нет и не планируется пока - лень))

Каков вопрос - таков и ответ. Просто помните об этом.

DaivZ
Юзер

DaivZ - 12 марта 2013 09:12 -

я нормально ставил на 9.8

Bagz
Юзер

Bagz - 28 марта 2013 22:00 -

ПафНутиЙ можешь скинуть готовый parse.class.php? а то у меня ошибки какиета

ПафНутиЙ
Админ

ПафНутиЙ - 28 марта 2013 22:02 -

Да уже удалил давно, мне вполне хватает инструкции)

Каков вопрос - таков и ответ. Просто помните об этом.

Bagz
Юзер

Bagz - 29 марта 2013 16:08 -

Сделал все по инструкции и получил вот такую ошибку Parse error: syntax error, unexpected ';', expecting T_FUNCTION in /home/u318343969/public_html/engine/classes/parse.class.php on line 1645 Что делать?

ПафНутиЙ
Админ

ПафНутиЙ - 29 марта 2013 16:15 -

А что там в этой строке написано?

Каков вопрос - таков и ответ. Просто помните об этом.

Bagz
Юзер

Bagz - 29 марта 2013 16:44 -

Вот это ?>

hicenko
Юзер

hicenko - 24 апреля 2013 17:56 -

Добрый день.
После вставки видео на сайт, не запускается видео и не работает редактирование новости...
Музыка работает.
В чем может быть косяк?

qwerty_up
Юзер

qwerty_up - 16 мая 2013 17:22 -

Здравствуйте!
Как решить проблему если в название видео присутствуют [ ] скобки то плеер не находит файл??

karen.nersisyan.75
Юзер

karen.nersisyan.75 - 15 октября 2013 19:17 -

a на dle 9.3 как делать

ПафНутиЙ
Админ

ПафНутиЙ - 15 октября 2013 19:37 -

обновиться до 9.7 и установить)

Каков вопрос - таков и ответ. Просто помните об этом.

karen.nersisyan.75
Юзер

karen.nersisyan.75 - 15 октября 2013 21:06 -

a как обновить :)

karen.nersisyan.75
Юзер

karen.nersisyan.75 - 17 октября 2013 14:44 -

ошибкa Parse error: syntax error, unexpected ';', expecting T_FUNCTION in /home/u351684164/public_html/engine/classes/parse.class.php on line 1651 Что делать?
а там написано ?>

SimpleFilmsru
Юзер

SimpleFilmsru - 10 декабря 2013 16:40 -

А как сделать чтобы видео можно было добавлять через iframe

ПафНутиЙ
Админ

ПафНутиЙ - 10 декабря 2013 21:42 -

А как вы раньше делали, так и делайте.

Каков вопрос - таков и ответ. Просто помните об этом.

SimpleFilmsru
Юзер

SimpleFilmsru - 11 декабря 2013 08:43 -

ПафНутиЙ, Я имею ввиду добавить видео в свой uppod ссылкой например: rutube.ru/video/0268bcdae4aa16bc71f88afa0ca49e05

Можно это как нибудь сделать?

Чтобы комментировать - войдите или зарегистрируйтесь на сайте
наверх