Поле видео и аудио

+9
1.06K
Поле видео и аудио

Поле на основе поля файл, до этого у меня в постах был хак из этого поля, но как мне недавно сказали что это не камильфо, поэтому теперь в виде поля и как выяснилось в том хаке были недочеты, но я их не видел тк не пользовал по несколько полей   

Поле позволяет загружать аудио и видео, подключен плеер Plyr

расширения mp4 и mp3, в зависимости от того какое указали выводится нужный плеер

возможно не без косяков 

Изображение

Изображение

Прикреплённый файл:
Скачать 109 Кбскачан 61 раз
0
Александр Александр 7 месяцев назад #

Неплохо, вроде все работает, но в конечном итоге на странице вывода видеоролика выдало ошибку:

Неустранимая ошибка: необнаруженная ошибка: вызов неопределенного метода cmsTemplate::addTplCSSName() в /var/www/www-root/data/www/site.ru/system/fields/videoaudio.php:72 Трассировки стека: #0 /var/www/www-root/data/www/site.ru/system/controllers/content/actions/item_view.php(181): fieldVideoaudio->parse('---\nid: 2\ имя:...') # 1 /var/www/www-root/data/www/site.ru/system/core/controller.php(514): actionContentItemView->run() #2 /var/www/www-root/data/www/site.ru/system/core/controller.php(425): cmsController->runExternalAction('item_view', Array) #3 /var/www/www-root/data/www/site.ru/system/controllers/content/frontend.php(22): cmsController->runAction('item_view') #4 /var/www/www-root/data/www/site.ru/system/core/controller.php(450): content->route('news/10-dst-med...') #5 /var/www/www-root/data/www/site.ru/system/core/core.php(736): cmsController->runAction('news', Array) #6 /var/www/www-root/data/www/site.ru/index.php(44): cmsCore->runController() #7 {основной} брошенный в /var/www/www-root/data/www/site.ru/system/fields/videoaudio.php в строке 72 

Версия инстанта 2.12

0
Kuper Kuper 7 месяцев назад #

Тестировал на версии 2.16.2 с обновлением до 2.16.3

в вашем случае возможно нужно убрать в \system\fields\videoaudio.php

  1. if (!self::$templated) {
  2. $template->addTplCSSName('plyr');
  3. $template->addTplJSName('plyr');
  4.  
  5. }

и подключить js напрямую в шаблоне main.tpl и css  так же

 по пути 'js/ или css

  1. <link rel="stylesheet" href="<?php echo $this->getTemplateFilePath('js/dist/plyr.css'); ?>" />
  2. <script src="<?php echo $this->getTemplateFilePath('js/dist/plyr.js'); ?>" crossorigin="anonymous"></script>

Изображение

0
Александр Александр 7 месяцев назад #

Спасибо за ответ. Да что-то я сам не досмотрел, подключил не заработало, подключил напрямую:

  1. <link rel="stylesheet" href="/templates/default/js/dist/plyr.css" />
  2. <script src="/templates/default/js/dist/plyr.js"></script>

все ок.

Единственное в посте все равно видеоролик так и не появился, хотя понятно поле в типах сделал

0
Kuper Kuper 7 месяцев назад #

установил 2.12 

подшаманил, заработало 

demo.cms-php.ru/articles/12-demo.html

установочный пакет под 2.12 main.tpl сразу в архиве и ЗАМЕНЯЕТ оригинал

kuper-spb.ru/index.php/s/n7RefMW9dE75CCJ

А собственно нескромный вопрос почему не обновитесь?

  1. <?php $this->addMainTplCSSName('plyr'); ?>
  2. <?php $this->addMainTplJSName('plyr'); ?>

сответственно в папки js и css

Изображение

0
Александр Александр 7 месяцев назад #

А собственно нескромный вопрос почему не обновитесь?

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

+2
Kuper Kuper 7 месяцев назад #

Еще немного поглумился над полем аудио, вытащил тэги из файлов, теперь два трека вместе не запустятся, получилось примерно так

demo.cms-php.ru/articles/11-demo-audio.html

Изображение

0
Hold my beer Hold my beer 4 месяца назад #

Подскажите, а как расширить список загружаемых файлов, добавить mpeg avi mpg wmv flv mov 3gp? Самим проигрывателем вроде они поддерживаются, не хочется ограничивать пользователей одним mp4

+1
pupsik pupsik 4 месяца назад #

system/fields/videoaudio.php после

  1. if (get_file_extension($name) == 'mp4'){
  2. $file = '<video class="js-player" id="player" playsinline controls><source src="/upload/'.$file['path'].'" type="video/mp4" /></video>'.$downl;
  3.  
  4. }

добавте:

  1. if (get_file_extension($name) == 'avi'){
  2. $file = '<video class="js-player" id="player" playsinline controls><source src="/upload/'.$file['path'].'" type="video/avi" /></video>'.$downl;
  3.  
  4. }

и т.д. другие

ну и в plyr.js добавте, то чего не будет хватать.video/webm, video/avi  и т.д.

0
Hold my beer Hold my beer 4 месяца назад #

К сожалению тут сложнее, чем показалось изначально. Добавил MOV и flv. Первый это формат айфонов, если хотим чтобы пользователи загружали свои видео, его нужно поддерживать. Файлы в этом расширении загружаются, но проигрыватель их не показывает.

Другая ситуация с файлами о которых похоже CMS не знает, их хоть прописывай хоть нет, все равно выводится список поддерживаемых и в нем только те о которых она знает (весьма ограниченный список, например в нем нет webm )

Настройки поля — в списке например есть webm, но при попытке сохранить пост всплывает уведомление об ошибке где этого формата нет -

Изображение

Изображение

вот мой файл system/fields/videoaudio.php 
кстати как тут более правильно — if или elsif ?

Изображение

+1
pupsik pupsik 4 месяца назад #

Сейчас разберемся что там. У меня просто плеер убран вообще, и выводятся все видео через <video>, да и загружаю видео через TinyMCE. Может сама инстант не поддерживает webm. Сейчас я установлю чистый cms с этим плагином и отпишусь.

+1
pupsik pupsik 4 месяца назад #

Вот гляньте webm

madway.net/

system/config/mimetypes.php тоже надо прописать webm

И да делайте через elseif

  1. elseif (get_file_extension($name) == 'webm'){
  2. $file = '<video class="js-player" id="player" playsinline controls><source src="/upload/'.$file['path'].'" type="video/webm" /></video>'.$downl;
  3. }

Чтобы играл MOV, это надо в plyr.js, прописывать codec. Если вы его знаете то юзайте.

А если нет то по старинке:

  1. elseif (get_file_extension($name) == 'mov'){
  2. $file = '<video src="/upload/'.$file['path'].'" type="video/mov" playsinline controls></video>'.$downl;
  3.  
  4. }
0
Hold my beer Hold my beer 4 месяца назад #

Спасибо, все получилось! Если кто-то вдруг знает, как заставить этот проигрыватель показывать MOV и flv дайте знать пожалуйста. На сайте Plyr и гитхабе сходу не удалось найти информацию

+1
pupsik pupsik 4 месяца назад #

Так, все намного проще тут. Почитал немного про .mov. И video/mp4 к нему подходит.

  1. elseif (get_file_extension($name) == 'mov'){
  2. $file = '<video class="js-player" id="player" playsinline controls><source src="/upload/'.$file['path'].'" type="video/mp4" /></video>'.$downl;
  3. }

Удачи

Еще от автора

Заголовок для ссылки из названия поля и ссылка в виде кнопки
Небольшой хак для того что бы не писать каждый раз заголовок для ссылок если он каждый раз одинаковый и оформление ссылок в виде кнопки
Загрузка видео на сайт
Загрузка видео через поле файл + плеер Plyr
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.