Созданные страницы должны выводиться плиткой, с показом картинки от видео, причем, со своего сервера — чтобы не ждать ответа от удалённого. Задача осложняется тем, что существует минимум 8 вариантов указания ссылок на эти 3 сервиса: Это всё ссылки на один и тот же клип Rammstein — Mein Herz brennt (Piano Version). Не стоит забывать еще и про юзеров, которые обязательно вставят в форму "ссылку для блога", то есть — прям тег iframe со всеми свойствами, который отдаст сервис.
Вот исходный код моего класса, пользуйтесь на здоровье. Он абсолютно самодостаточен и не завязан на MODX, требуется только cUrl.
В ответ приходит массив содержащий или ключ error с ошибкой, или ключи со ссылками image и video. Если картинку достать не получается — будет подставлен дефолтный url. Все ссылки на видео-хостинги приводятся к единому виду.
Обращаю ваше внимание на то, что превью-картинки сохраняются на сервер, то есть достаются ровно один раз, затем можно использовать их как угодно. При инициализации класса можно указать пути для работы.
Пример использования: Отправите ссылку через $_GET и в ответ получите массив с результатом и картинку в указанной директории.
Обновлено 17.08.13
-
09 декабря 2012, 08:44 Василий Наумкин 10353
Комментарии ( )
Вот варианты ссылок, которые я нашел для YouTube.
Регулярка простая: Но у меня по проекту условие, что один урл в одной строке, поэтому где-то может не работать.
Обращаю ваше внимание на то, что превью-картинки сохраняются на сервер, то есть достаются ровно один раз, затем можно использовать их как угодно. При инициализации класса можно указать пути для работы.
Не понятно, что делает этот сниппет? Зачем он и выставляет плейсхолдеры, и возвращает url картинкивидео?
У меня, например, через форму отправлялся урл, для него получалась картинка и сохранялась на сервер, записывая свой адрес в ТВ ресурса. Ну а потом уже обычный вывод страниц, через getResources, с этими картинками.
А тут какая задача?
У меня задача: есть раздел с мастерклассами, они в частности состоят из видео и тестового описания. Т.е. надо выводить видео с ютубы на самой странице и картинку в анонсе, для завлекухи.
Сниппет я обозвал getVideo, он из TV получает ссылку на ютубное видео.
Сниппет сохраняет резултаты в плейсхолдеры, что бы удобнее было на странице/в шаблоне пользоваться этими результатами.
В разделе выводится листинг анонсов. При этом случился трабл: почему то при вызове сниппета в чанке анонса картинка выставлялась только для первого анонса, а для всех последующих — назначалась картинка последнего поста. Т.е. плейсхолдеры закешировались, хотя я и вызывал плейсхолдер некешируемо — [[!+v.image]] и сам сниппет тоже [[!getVideo?url=`[[+tv.studioVideo]]`]]
Потому я сделал так, что бы сниппет мог возращать требуемое значение, а не сохранять его в плейсхолдер. Теперь вызов в чанке делается так: и всё заработало.
Выходит, у тебя каждый раз запускается сниппет, обрабатывает ссылку и потом клиент тянет картинку с youtube?
При том, что сниппет, на самом деле, сохраняет эти картинки на твой сервер. В общем, я бы добавил ТВ studioImage и переделал так:
Пишем сниппет, getImage:
Таким образом, класс videoThumb инициализируется только раз и сниппет запускается только на те записи, у которых нет ТВ с картинкой. Ну а картинки потом получаются с твоего сервера. Так быстрее и логичнее.
Писал в браузере, не проверял — могут быть опечатки.