Форум русской поддержки Joomla!® CMS
11.12.2016, 12:01:36 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

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

 (Прочитано 423 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Taatshi
Support Team
*****

Репутация: +430/-3
Offline Offline

Пол: Женский
Сообщений: 4718

Мама, я снова верстал во сне...


« : 23.05.2016, 20:05:42 »

Что-то не нашла где формируется код вывода видео. Нужно убрать управляющие элементы и зациклить воспроизведение видео для товара.
Записан
dmitry_stas
Профи
********

Репутация: +798/-4
Online Online

Сообщений: 7787



« Ответ #1 : 23.05.2016, 20:12:22 »

эм... код вывода видео формируется вот здесь: http://prntscr.com/b7hm0z Azn видимо речь не об этом коде?
Записан
Taatshi
Support Team
*****

Репутация: +430/-3
Offline Offline

Пол: Женский
Сообщений: 4718

Мама, я снова верстал во сне...


« Ответ #2 : 23.05.2016, 20:16:11 »

Нет, мне нужно указать файл видео, и вот это видео зациклить и убрать управляющие элементы плеера. Заставлять клиента, ничего не понимающего в HTML, вставлять название файла в код негуманно.
Записан
dmitry_stas
Профи
********

Репутация: +798/-4
Online Online

Сообщений: 7787



« Ответ #3 : 23.05.2016, 21:46:37 »

так а что тогда? вывод в файле \components\com_jshopping\templates\default\product\playmedia.php

Код:
            <div class="file_demo_video">
                <video width="<?php print $this->config->video_product_width; ?>" height="<?php print $this->config->video_product_height; ?>" controls autoplay id = "video">
                    <source
                        src="<?php print $this->config->demo_product_live_path.'/'.$this->filename;?>"
                        <?php if ($this->config->video_html5_type){?>
                        type='<?php print $this->config->video_html5_type?>'
                        <?php }?>
                    />
                </video>
            </div>

это?
Записан
Taatshi
Support Team
*****

Репутация: +430/-3
Offline Offline

Пол: Женский
Сообщений: 4718

Мама, я снова верстал во сне...


« Ответ #4 : 23.05.2016, 22:44:14 »

Это вообще откуда? У меня там совсем по-другому. Причем я его из компонента выдернула.

Код
<html>
<head>
<title><?php print $this->description; ?></title>
       <?php print $this->scripts_load?>
</head>
<body style = "padding: 0px; margin: 0px;">
<a class = "video_full" id = "video" href = "<?php print $this->config->demo_product_live_path.'/'.$this->filename; ?>"></a>
 
<script type="text/javascript">
           var liveurl = '<?php print JURI::root()?>';
jQuery('#video').media( { width: <?php print $this->config->video_product_width; ?>, height: <?php print $this->config->video_product_height; ?>, autoplay: 1} );
</script>
</body>
</html>
Записан
Linfuby
Живу я здесь
******

Репутация: +165/-0
Offline Offline

Пол: Мужской
Сообщений: 1202


Всё просто...


« Ответ #5 : 23.05.2016, 22:46:05 »

Подозреваю что нужно изучить сначала это: https://webref.ru/html/video
Записан
Taatshi
Support Team
*****

Репутация: +430/-3
Offline Offline

Пол: Женский
Сообщений: 4718

Мама, я снова верстал во сне...


« Ответ #6 : 23.05.2016, 22:58:11 »

Я бы его вообще по-новой переписала, но изменение этого файла в папке HTML шаблона вообще никак на отображении видео в карточке товара не сказывается. Либо я туплю, либо мы о чем-то разном говорим(
Записан
dmitry_stas
Профи
********

Репутация: +798/-4
Online Online

Сообщений: 7787



« Ответ #7 : 24.05.2016, 00:27:35 »

Это вообще откуда? У меня там совсем по-другому.
ну да, так и есть, похоже только не все. в оригинале еще и тот кусок есть, который я показал Azn

Я бы его вообще по-новой переписала, но изменение этого файла в папке HTML шаблона вообще никак на отображении видео в карточке товара не сказывается.
это ифрейм, который открывается когда в кнопочку Проиграть видео нажимаешь. давай тогда сначала: каким образом видео добавлено и как оно выводится сейчас?
Записан
Taatshi
Support Team
*****

Репутация: +430/-3
Offline Offline

Пол: Женский
Сообщений: 4718

Мама, я снова верстал во сне...


« Ответ #8 : 24.05.2016, 12:58:53 »

Итак, все подробно. Сайт я получила с демо материалами, так что будем разбираться с шаблонами тоже

1) Добавление видео стандартным способом через админку с помощью выбора файла.

Показать текстовый блок

2) На данный момент это mp4. Выбор HTML5 формата в настройках видео тоже никакого видимого эффекта изменения кода не производит. Настройки сейчас

Показать текстовый блок

3) В шаблоне в папке HTML имеем

a) product/product_default.php

Видео упоминается два раза. В первый раз там, где выводится ссылка на видео. Оно было под превью картинок, я переместила вверх

Код
<?php if (count($this->videos)){?>
                       <?php foreach($this->videos as $k=>$video){?>
                           <?php if ($video->video_code) { ?>
                               <a href="#" id="video_<?php print $k?>" onclick="showVideoCode(this.id);return false;"><img class="jshop_video_thumb" src="<?php print $this->video_image_preview_path."/"; if ($video->video_preview) print $video->video_preview; else print 'video.gif'?>" alt="video" /></a>
                           <?php } else { ?>
                               <a href="<?php print $this->video_product_path?>/<?php print $video->video_name?>" id="video_<?php print $k?>" onclick="showVideo(this.id, '<?php print $this->config->video_product_width;?>', '<?php print $this->config->video_product_height;?>'); return false;"><img class="jshop_video_thumb" src="<?php print $this->video_image_preview_path."/"; if ($video->video_preview) print $video->video_preview; else print 'video.gif'?>" alt="video" /></a>
                           <?php } ?>
                       <?php } ?>
                   <?php }?>

Второй раз внизу, перед выводом среднего изображения

Код
<?php if (count($this->videos)){?>
                       <?php foreach($this->videos as $k=>$video){?>
                           <?php if ($video->video_code){ ?>
                               <div style="display:none" class="video_full" id="hide_video_<?php print $k?>"></div>
                           <?php } else { ?>
                               <a style="display:none" class="video_full" id="hide_video_<?php print $k?>" href=""></a>
                           <?php } ?>
                       <?php } ?>
                   <?php }?>

файл playmedia.php я заменила на оригинальный из шаблона JoomShopping - но такое ощущение, что он вообще никак не сказывается на выводе видео. Убрала в нем controls - все равно управляющие элементы отображаются.

посмотреть вживую

В общем, главный вопрос насколько я понимаю - почему не цепляется playmedia из папки HTML шаблона.
« Последнее редактирование: 24.05.2016, 13:35:56 от Taatshi » Записан
kit2m2
Завсегдатай
*****

Репутация: +76/-0
Offline Offline

Пол: Мужской
Сообщений: 771



« Ответ #9 : 24.05.2016, 13:34:33 »

Все настройки video в файле functions.js
Код:
var joomshoppingVideoHtml5 = 0;
var joomshoppingVideoHtml5Type = '';
function showVideo(idElement, width, height){
    var videofile = jQuery("#"+idElement).attr("href");
   
    jQuery('.video_full').hide();
    jQuery('#hide_' + idElement).attr("href", videofile);
    jQuery('a.lightbox').hide();
    jQuery('#main_image').hide();
    jQuery(".product_label").hide();
    jQuery("#videoshophtml5").remove();
    if (!joomshoppingVideoHtml5){
        jQuery('#hide_' + idElement).show();
        jQuery('#hide_' + idElement).media( { width: width, height: height} );
    }else{
        var videoOptions = {
            id: 'videoshophtml5',
            src: videofile,           
            width: width,
            height: height,
            controls: true
        };
        if (joomshoppingVideoHtml5Type!=''){
            videoOptions.type = joomshoppingVideoHtml5Type;
        }
        var video = jQuery('<video />', videoOptions);
        video.appendTo(jQuery('.image_middle'));
    }
}

Для зацикливания нужно добавить loop: true Для того чтобы убрать панель - controls: false
Записан
Taatshi
Support Team
*****

Репутация: +430/-3
Offline Offline

Пол: Женский
Сообщений: 4718

Мама, я снова верстал во сне...


« Ответ #10 : 24.05.2016, 13:37:42 »

Все настройки video в файле functions.js
Это где именно расположено?

UPD Это хак(((
« Последнее редактирование: 24.05.2016, 13:40:59 от Taatshi » Записан
kit2m2
Завсегдатай
*****

Репутация: +76/-0
Offline Offline

Пол: Мужской
Сообщений: 771



« Ответ #11 : 24.05.2016, 13:47:56 »

Понятно что если править код то будет хак. Вы спросили где, я указал. А чтобы без хака нужен плагин.
Записан
Taatshi
Support Team
*****

Репутация: +430/-3
Offline Offline

Пол: Женский
Сообщений: 4718

Мама, я снова верстал во сне...


« Ответ #12 : 24.05.2016, 13:51:09 »

Если выбрать HTML 5 все это можно прямо в код вписать. Непонятно почему playmedia.php не подхватывается.
Записан
kit2m2
Завсегдатай
*****

Репутация: +76/-0
Offline Offline

Пол: Мужской
Сообщений: 771



« Ответ #13 : 24.05.2016, 14:01:05 »

Попробуйте так:
Код:
                <video width="<?php print $this->config->video_product_width; ?>" height="<?php print $this->config->video_product_height; ?>" loop="loop" autoplay id = "video">
                    <source
                        src="<?php print $this->config->demo_product_live_path.'/'.$this->filename;?>"
                        <?php if ($this->config->video_html5_type){?>
                        type='<?php print $this->config->video_html5_type?>'
                        <?php }?>
                    />
                </video>
Записан
Taatshi
Support Team
*****

Репутация: +430/-3
Offline Offline

Пол: Женский
Сообщений: 4718

Мама, я снова верстал во сне...


« Ответ #14 : 24.05.2016, 14:15:04 »

Где именно?
Записан
kit2m2
Завсегдатай
*****

Репутация: +76/-0
Offline Offline

Пол: Мужской
Сообщений: 771



« Ответ #15 : 24.05.2016, 14:18:00 »

Цитировать
3) В шаблоне в папке HTML имеем

a) product/product_default.php

В этом файле. И еще проверьте в load.js.php есть эти строки:
Код:
    var joomshoppingVideoHtml5 = <?php print (int)$this->config->video_html5?>;
    var joomshoppingVideoHtml5Type = '<?php print $this->config->video_html5_type?>';
Записан
dmitry_stas
Профи
********

Репутация: +798/-4
Online Online

Сообщений: 7787



« Ответ #16 : 24.05.2016, 19:11:56 »

Это хак(((

Javascript же Azn Переопредели функцию. Продублируй ее
Код:
function showVideo(idElement, width, height){
...
}
в любом js, который подключается после function.js (например /templates/forte/js/core/s5_flex_menu-min.js), и напиши там все нужные параметры.
Записан
Taatshi
Support Team
*****

Репутация: +430/-3
Offline Offline

Пол: Женский
Сообщений: 4718

Мама, я снова верстал во сне...


« Ответ #17 : 25.05.2016, 17:34:10 »

Добавила прямо в template-default.php

Код
<script>
   ( function($) {
       function showVideo(idElement, width, height){
           var videofile = jQuery("#"+idElement).attr("href");
 
           jQuery('.video_full').hide();
           jQuery('#hide_' + idElement).attr("href", videofile);
           jQuery('a.lightbox').hide();
           jQuery('#main_image').hide();
           jQuery(".product_label").hide();
           jQuery("#videoshophtml5").remove();
           if (!joomshoppingVideoHtml5){
               jQuery('#hide_' + idElement).show();
               jQuery('#hide_' + idElement).media( { width: width, height: height} );
           }else{
               var videoOptions = {
                   id: 'videoshophtml5',
                   src: videofile,
                   width: width,
                   height: height,
                   controls: false,
                   loop: true
               };
               if (joomshoppingVideoHtml5Type!=''){
                   videoOptions.type = joomshoppingVideoHtml5Type;
               }
               var video = jQuery('<video />', videoOptions);
               video.appendTo(jQuery('.image_middle'));
           }
       }
   } ) ( jQuery );
</script>

Не пашет(
Записан
kit2m2
Завсегдатай
*****

Репутация: +76/-0
Offline Offline

Пол: Мужской
Сообщений: 771



« Ответ #18 : 25.05.2016, 18:49:20 »

Вставлять нужно в <head></head>
Записан
kit2m2
Завсегдатай
*****

Репутация: +76/-0
Offline Offline

Пол: Мужской
Сообщений: 771



« Ответ #19 : 25.05.2016, 18:53:35 »

Примерно так:
Код:
$document = JFactory::getDocument();
$document->addCustomTag(
"<script type=\"text/javascript\">
jQuery(document).ready(function($){
                                                  ...

})
</script>");
Записан
dmitry_stas
Профи
********

Репутация: +798/-4
Online Online

Сообщений: 7787



« Ответ #20 : 25.05.2016, 21:00:43 »

Добавила прямо в template-default.php
не вижу в исходном коде. ну и обертка
Код:
( function($) { ... } ) ( jQuery );
в данном случае тоже особо не нужна.
Записан
Taatshi
Support Team
*****

Репутация: +430/-3
Offline Offline

Пол: Женский
Сообщений: 4718

Мама, я снова верстал во сне...


« Ответ #21 : 03.06.2016, 23:18:07 »

В общем, сделала так

в самом файле product_default.php вставила код

Код
<?php if (count($this->videos)){?>
                       <?php foreach($this->videos as $k=>$video){?>
                           <?php if ($video->video_code){ ?>
                               <div style="display:none" class="video_full" id="hide_video_<?php print $k?>"></div>
                           <?php } else { ?>
                               <video width="<?php print $this->config->video_product_width; ?>" height="<?php print $this->config->video_product_height; ?>" loop="loop" preload="metadata" autoplay id = "video_id" >
                                   <source
                                       src="<?php print $this->config->video_product_live_path.'/'.$video->video_name;?>"
                                       <?php if ($this->config->video_html5){?>
                                           type='<?php print $this->config->video_html5_type?>'
                                       <?php }?>
                                   />
                               </video>
                           <?php } ?>
                       <?php } ?>
                   <?php }?>

и запихала его абсолютом под фото. Убрала вообще ссылку

Код
<a style="display:none" class="video_full" id="hide_video_<?php print $k?>" href=""></a>

Решение костыльное и мне не нравится, но другого я пока не нашла.
Записан
dmitry_stas
Профи
********

Репутация: +798/-4
Online Online

Сообщений: 7787



« Ответ #22 : 04.06.2016, 11:21:08 »

да можно и так. чем плохо? ну и я так и не понял, почему же не получилось с переопределением showVideo?
Записан
Taatshi
Support Team
*****

Репутация: +430/-3
Offline Offline

Пол: Женский
Сообщений: 4718

Мама, я снова верстал во сне...


« Ответ #23 : 04.06.2016, 11:33:51 »

да можно и так. чем плохо?

Тем, что данный способ годится только для одного видео. Если их  будет несколько - уже не сработает как надо.

А не переопределилось потому, что в процессе участвует еще что-то, одного переопределения скрипта недостаточно. Нужно править код видео. А это никак не в файле playmedia.php. Где - не нашла.
« Последнее редактирование: 04.06.2016, 11:38:08 от Taatshi » Записан
dmitry_stas
Профи
********

Репутация: +798/-4
Online Online

Сообщений: 7787



« Ответ #24 : 04.06.2016, 17:18:43 »

Тем, что данный способ годится только для одного видео. Если их  будет несколько - уже не сработает как надо.
выводить loop="loop" autoplay только if ($k == 0), т.е. только для первого видео. или в чем именно проблема с несколькими?


в процессе участвует еще что-то, одного переопределения скрипта недостаточно. Нужно править код видео
посмотрел еще раз. ничего больше не надо править, никакого кода видео Azn его и нет больше нигде. тег video добавляется именно в функции showVideo
Код
var video = jQuery('<video />', videoOptions);
соответственно, надо эту функцию продублировать (переопределить), и просто добавить в videoOptions нужное. Обрати внимание, что joomshoppingVideoHtml5=0 дублировать не нужно, он должен быть 1. Т.е. переопределяем только function showVideo(idElement, width, height) { ... }
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet