[videoGallery] Видео галерея YouTube, Vimeo
Небольшой компонент, который добавляет новый тип TV — videoGallery. Туда можно вставить ссылку на ролик Ютуб и получить JSON в это ТВ (чего хватит для Fenom). Но можно и раскидать данные ролика по полям документа в автоматическом режиме, путём указания в системных настройках требуемых полей.

На картинке:
- в блоке номер 1 — TV поле с типом videoGallery.
- в блоке номер 2 — поля указанные по желанию в настройках (они необязательны).
В компоненте были использованы 2 класса для обработки ссылок:
- videoThumb от Василия Наумкина — bezumkin.ru/sections/blog/441/
- Panorama PHP от frandieguez — github.com/frandieguez/Panorama-PHP
Пример обработки JSON поля средствами Fenom:
{set $video_json = json_decode($_modx->resource.video, true)}
{if $video_json.video?}
<div><img src="{$video_json.image}" /></div>
<iframe width="860" height="650" src="{$video_json['video']}" frameborder="0" allowfullscreen></iframe>
{if $video_json.title?}
<div><b>Название:</b> {$video_json.title}</div>
{/if}
{if $video_json.desc?}
<div><b>Описание:</b> {$video_json.desc}</div>
{/if}
{else}
Видео нет
{/if}Видеогалерея — это конечно громко сказано. Однако название было придумано с расчётом на будущее данного компонента.
Скачать компонент — modstore.pro/packages/other/videogallery
Комментарии: 190
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Компонент очень интересный и многим понадобится. Я себе уже поставил галочку, что такой компонент есть, и теперь буду знать, где его найти.
Ну и не хватает примеров по выводу этого ТВ на странице, особенно через Fenom.
Не совсем понятно, зачем использовать два класса, которые решают одну и ту же задачу. Разница только в том, что videoThumb не умеет получать название, описание и другие характеристики видео, но зато он будет работать без ключа. А Panorama, как я помню, не понимал ссылки типа youtu.be, если не исправили уже, конечно.
«Не трогать! Заполняется автоматически» — лучше было бы не заполнять автоматически там, где заполнили вручную. Даже в примере пользователь, скорее всего, захочет убрать ссылку из описания. Если же данные запрашиваются и перезаписываются каждый раз при сохранении страницы, то это не очень хорошо.
А ссылку на embed нет смысла вообще показывать в админке, она необходима только при выводе. Вообще не представляю ситуацию, в которой пользователю нужна возможность менять это поле.
По полям, которые ниже поля с видео — эти поля каждый создает сам, ровно как и поле с типом videoGallery, поэтому вместо «заполняется автоматически», каждый для себя может написать что угодно. А может вообще не создавать эти поля, а выводить ту-же самую информацию используя возможности Fenom. Фактически, эти 4 поля каждый создает (или не создаёт) сам для своего же удобства. Кому удобнее хранить всё в одном json поле — обходится только первым полем. Единственное я скрыл поле с массивом json, наверное всё же нужно было оставить его для наглядности того, что оно есть?
Данные запрашиваются при событии jquery — «input». А при сохранении срабатывает плагин, который удаляет старые не используемые изображения из папки, оставляя только то, что используется в Json массиве в поле с типом «videoGallery».
Использовать её можно исключительно там, где ты — единственный хозяин сайта и больше никого в админке гарантированно не будет. Если ты предлагаешь общедоступное решение — это не вариант.
Так что использование {$modx-> fromJSON()} отпадает, но зато мы можем использовать обычный json_decode() — он в списке разрешенных функций Fenom, вместе с
Так что, правильный вариант будет таков:
И кстати, можно заменить
См. операторы сравнения. Обожаю Fenom!
Так же Создает галерею из минусов компонента
— Разработка заброшена но работает
— Не поддерживает getPage pdoPage (собственная пагинация)
— Есть два варианта работы либо указывается массив имен видео роликов ( прямо в коде что фигово ), 2 вариант указываться имя канала — глючит после некоторого времени начинает выводить только 4 1 -вых видео).
Допилить бы этому компоненту пагинацию нормалдьную устранить баги с каналом и нормальнуюю админку и красота была бы.
Суть работы такая указываешь канал и он ролики прямо с канала в галерею все выводит.
ЧЯДНТ?
Возможно Феном (или что-то ещё) декодит JSON ещё на стороне вывода. У меня сейчас так с новой версии pdoTools. Надо переписать пример будет.
Значит тебе надо выводить сразу вот так:
— Если мы вызываем ТВшку через сниппет pdoResources, он у нас преобразует JSON в Array автоматом, и нам не надо декодировать ТВ параметр в чанке вывода результата.
— Если мы вызываем ТВшку на странице вот так — "$_modx->resource.video", он нам вернёт JSON массив, который как и прежде надо
преобразовать в обычный массивдекодировать.Прошу прощения за то, что запутал. Сам запутался. Только сейчас дошло, в чём дело.
К тому-же я не вижу, в каком виде ты его указал. Может не правильно.
Если ты хочешь, чтоб тебе помогли — научись задавать вопросы. Чем больше информации ты укажешь в вопросе о своей проблеме и о попытках её решения, тем больше вероятности того, что тебе помогут.
Меня поражают подобные ситуации, когда люди думают, что той информацией, которой руководствуются они — априори руководствуются и их оппоненты. Это не так…
А в каком «виде» можно указать tv?
И в описании настройки есть пример, как указывать ТВ поле. Читай описание настроек чаще, оно не просто так пишется…
Рекомендую всем обновится, потому что в ранних версиях была жёсткая недоработка с переносом картинок из временной папки.
Есть проблема: конфликт js в бэкенде при использовании videoGallery в документах вместе с ContentBlocks
Да, понимаю, кроме меня ContentBlocks тут мало кто использует, увы. Но если, вдруг, автор проявит интерес к этой проблеме, готов обсудить стоимость ее устранения и буду благодарен, если в последующих релизах она будет пофиксена.
Компонент videoGallery весьма хорошо подошел для сохранения превьюшки и прочих заявленных функций при работе с Vimeo.
PS Кстати, зря в названии галереи Vimeo не упоминается, далеко не все можно хостить на youtube по многим причинам, потому, кто то ищет такое решение и в заголовок vimto хорошо бы добавить.
Я использую платный аккаунт vimeo. Так как этот видеохостинг более продвинутый, по сравнению с youtube, в части кастомизации и брендирования плеера, настроек приватности, настроек для отображения видео на ограниченном перечне доменов и т.п.
По поводу конфликта: у меня нет компонента ContentBlocks. Ту стоимость, которую они выставили — платить не вижу смысла, для устранения конфликта, уж извините.
Тем более, что евро к тенге вырос почти в 2 раза чуть ли не за пол месяца.Если есть возможность дать мне доступ поработать на том сайте, где он у вас установлен (желательно чтобы это был чистый сайт, не боевой так сказать), я бы проявил интерес к устранению данного конфликта.Отпишу в личку.
в core/components/videogallery/tv/input/tpl/tv.videoGallery.input.tpl
Настройки:
prntscr.com/8kom16
TV
prntscr.com/8kon1x
Страница ресурса:
prntscr.com/8konmr
Вставляю ссылку, обновляются превьюшки, tv для ссылки пустое
MODX v.2.4.1
неудачный пример с вимео взял, он к одному домену привязан, но суть не меняться
Как вариант, обработать строку Феномом. У него есть модификатор replace:
P.S.: Не знаю точно, какой там embed УРЛ у vimeo, поэтому вместо того, что я написал в коде — замените на реальное.
Однако, поле с id видео предусмотрите в следующей версии, очень оно будет полезным.
В JSON поле добавился новый элемент массива — videoId.
videoId — регистр Id важен?
это для unitegallery.net/index.php?page=video-icon
Также в админке и на сайте он не отображается без костылей когда сайт https
По удалению ролика: когда перезаписываешь пустым, что-нибудь пишет? Или пишет, что сохранено, а ролик остался при последующем входе на страницу редактирования ресурса? Остаётся где? В JSON строке, или в дополнительных полях, которые указываются в настройках пакета?
остается в JSON строке, дополнительных полей нет вообще, только поле ввода ссылки
Получается что видео добавляется в соответствующий ресурс в каждом контексте?
То есть, если три контекста = три языка, то видео добавляем в трех местах?
На самом деле ковырялся ночью по разному, все не вспомню, поэтому и попросил вас написать, для ДЕБИЛОВ, как сделать, чтобы видео на странице появилось :))))
Вы не могли бы написать, как правильно выводить вот это
fenom же в pdo, может я не так вывожу.? И куда вставить, мне нужно, чтобы видео было на страничке новости, как просто при вставке из ютуба — вставляю iframe на страницу и получаю видео, но проблема в одном- html редактор обрезает от сюда следует, что не возможно на весь экран открыть…
Но я так и не смог решить 2ю проблему, у меня для отображения превью к новостям используется TV поле image, и я хотел, чтобы при вставке видео, картинка добавлялась в это поле, вбил это тв в настройки но ничего не выходило. Теперь я понимаю, что у меня не только картинка в нужное поле не вставлялась, потому и не выводилась но еще и ссылка на видео. Промучался весь день, чтобы найти проблему, может быть вы знаете почему такое происходит?
modx.pro/components/6314-videogallery-video-gallery-youtube/#comment-45922
Вполне возможно, если ты будешь читать описание к настройкам, которые вбиваешь в системных параметрах, и вникать в то, что там написано, то многие проблемы получится избежать сейчас и в будущем.
---Вкладки формы---
[{«caption»: «video-gallery»,
«fields»: [
{«field»:«video-item», «caption»:«Видео», «inputTV»:«videoGallery»}]
}]
---Разметка колонок---
[{«header»:«Ссылка на видео», «sortable»:«true», «dataIndex»:«video-item», «renderer»:«this.renderVideoGalleryTV»}]
Пишет ошибку — assets/components/migx/connector.php Failed to load resource: the server responded with a status of 500 (Internal Server Error)
Думаю проблемма в этом — renderer":«this.renderVideoGalleryTV».
Вот мой код для создания галлереи:
но при добавлении Видео на вкладке TV, у меня выводится пустое окно :(
В логах тоже пусто.
VideoGallery я использую с Vimeo. «Родное» изображение в случае с вимео большое — 1 920px × 1 080px (пример), но videoGallery получает его и сжимает до 640px × 360px (т.е. в 3 раза). Возможно 1 920px × 1 080px особо ни кому не требуется, но 640px × 360px не очень универсальный размер. Уменьшение в два раза кажется более щадящим.
Собственно о чем я, а нельзя ли вынести в настройки возможность изменять размер сохраняемой превьюшки?
А теперь подскажи, у тебя так же QIWI для спасибо или уже нормально с Яндекс кошельком?
Набросал код, который обновит видео превьюхи у всех ресурсов. Если надо разграничить только для сервиса Vimeo — нужно добавить соответствующую проверку в выборку xPDO, это совершенно не сложно.
Я советую запускать его из терминала, вначале скрипта подключив MODX. Потому что, если ресурсов с видеороликами хотя-бы 30-50 штук, то времени на выполнение скрипта из браузера, скорее всего, не хватит.
Подключить MODX в скрипте можно вставив этот код в самое начало:
У меня установлен ContentBlocks. Вчера прошелся по ресурсам через Консоль скриптом и заметил (не факт что это связано) что все что было в трех контекстах где есть поле videoGallery осталось с контентом только в кеше. Причем текст остался доступен для редактирования через quickupdate, но если полностью открыть для редактирования- контент пуст. Кеш у ContentBlocks отдельный. И что «забавно», сохранение в режиме quickupdate ни к чему не приводит- т.е. при переходе в режим нормального редактирования контент пуст.
Еще раз повторю, я не связываю возможное затирание контента с обновлением превьюшек, но вот вопрос в том может ли быть это связано? Конечно попробую сделать резервную копию и помучать все повторно.
Единственное обстоятельство, отчего я связываю два события- это контекстов у меня более 5ти, в двух нет совсем полей videoGallery — и контент не пострадал, а в трех есть связанные через Babel ресурсы, везде есть заглавное видео и текстовый контент. ContentBlocks использую во всех ресурсах. Проблема только в контекстах где и ContentBlocks и videoGallery вместе.
Скорее я пишу это на случай если у кого то такая же ситуация возникнет. Буду разбираться.
Есть какая нить инструкция по получению API ключа? Русская
Установил компонент videoGallery.
Добавил дополнительное поле «video» с типом ввода «videoGallery»
Создал ресурс (документ) и вставил в него ссылку на видео YouTube через дополнительное поле «video» (в привьюшке отображается и картинка и видео).
Создал чанк «videoBlog»
Вызываю со страницы так
Fenom выдает «Видео нет».
Помогите пожалуйста советом, что я делаю не так?
т.к. в pdoResources уже идёт распаковка из JSON.
Всем спасибо!!!
Уважаемые модераторы, почистите, пожалуйста, данный топик от кучи флуда.
Круто!
Спасибо
вызываю
но не чего не выводится
videoGallery — полностью функционален когда к одному ресурсу нужно добавить одно видео. Сам использую его и очень доволен.
Для множества видео для одного ресурса есть хороший но платный ResVideoGallery (тоже использую).
С Videobox был отрицательный опыт, но не буду утверждать, что сейчас он такой же кривой как на момент выхода.
Вы наверно хорошо знаете как с ним работать. Вопрос, он какие поля парсит? Время, дату, описание, заголовок, превьюшку-картинку? Картинку какого размера/формата кстати?
Но если уже про подробно, то это тут и там же сообщается что он и для Joomla тоже, я этого раньше не видел, но очень идеологически это просматривалось, т.е. мне такое как раз не подходит, а вам самое то.
hitko.eu/videobox/adapters
PS вообще тут уместнее было бы говорить о расширении videoGallery, а не флудить.
Павел, извини, что-то полемика бестолковая вышла.
videoGallery
— позволяет парсить и записывать базу 1. продолжительность ролика, 2. видео урл, 3. изображение превью, 4. тайтл, 5. дескрипшн и т.п.
— поля можно указать\переопределить в настройках
______________
Videobox
не записывает в базу, просто выводит на страницах контент из различных медиахостингов
— системные настройки отсутствуют
А получаю такие ошибки:
Модикс последней версии, автор выручай)
у меня работает, просто прописал где нужно https в ссылках и все
Куда после распарсивания сохраняется картинка видео?
С прописанным ключом от гугла признаков жизни не подает, пишет:
«Неудалось обработать ответ от сервера. Попробуйте вставить ссылку на видеоролик заново.»
Без ключа генерирует превьюху и в iframe корректная ссылка встает. У кого то есть мысли что я делаю не так?
В итоге я пока это дело отложила, ибо так и не поняла что ему не по душе :)
Попробуйте без API ключа в настройках.
Подтянулся сам превью и только поле с ID. частично завелся :)
Ну и ладно, я уже и без оного реализовала страницу, просто что то нагуглила только 1 такую ошибку на форуме и там тоже не было решения, вот, заинтересовало.
И так тот же эффект :)
Я перевёл себе через translate.yandex.ru/ но хотелось бы из коробки.
У меня на нем не подгружается превью
В итоге к ссылке на изображение, которая формируется компонентом, впереди добавляется assets/img/ и на странице я получаю некорректный путь: Я что-то неправильно делаю?
Решение пока нашел такое:
Тогда картинка выводится норм. Но может есть другое решение, как учесть basePath и baseUrl других источников файлов?
Чекнул файлик github.com/Pathologic/SimpleTube/blob/master/assets/snippets/simpletube/lib/Panorama/Video/Youtube.php
из исходников, он изменился, но если его заменить, то вместо ошибки Video Id not valid. выскакивает 500: Internal Server Error
ну а если точнее:
Столкнулся с проблемой.
Плагин при парсинге роликов прописывает пути к ролику через http:/
Сайт использует https, и как результат видео не работает.
В настройках ничего нет.
Кто нибудь решал эту проблему?
Что это за формат?
Мой первый скрипт. Возможно говнокод — но он работает XD.
UPD: хотелось бы увидеть в новой обнове videoGallery возможность подтягивать просмотры с видеороликов.
Возможно ли этот компонент использовать для создания функционала для добавления видеообзора в карточку товара (в галерею)?
ERROR /home/c/cv08546/academy-kvant-psi.ru/core/components/pdotools/model/pdotools/pdotools.class.php 999
Unexpected token ':' in 76c458169bfd754d28bce3b6036afd55 line 13, near '{«video»:' < — there
Прошу помощи.
modAction support is deprecated since version 2.3.0. Support for modAction has been replaced with routing based on a namespace and action name. Please update the extra with the namespace videogallery to the routing based system.
Для отключения такого рода предупреждений установите системную настройку log_deprecated в состояние Нет