Rutube: интегрируем как ombed provider source в Drupal

Задача — добавить rutube как embed провайдера в медиа библиотеку, чтобы можно было создать медиа тип Rutube, где будет поле для ввода ссылки. Медиа поля после этого позволят добавлять еще один тип медиа содержимого — Rutube Video.

Будем использовать модуль oembed_providers для настройки rutube провайдера. Плагин уже поддерживает 10/11 Drupal, так что подойдет для новых проектов.

Custom provider Rutube

/admin/config/media/oembed-providers/custom-providers
В настройках кастомных провайдеров, нужно создать описание для oembed сервиса rutube. Почему rutube до сих под нет в списке провайдеров https://oembed.com/providers.json — остаётся загадкой. Возможно, они не соответствуют полной спецификации.

Итак, добавляем:

Provider name: rutube
Provider URL: https://rutube.ru
Далее описываем endpoint:
Schemas: https://rutube.ru/video/*/
Discovery: True
JSON: True

Можно JSON/XML галочки не ставить. Но я проверил, что JSON работает для oembed rutube сервера, поставил там галку.

Еще один нюанс — обратите внимание, что имя провайдера (provider name) написано с маленькой буквы. Там на форме есть примечание — The ‘Provider name’ must match the provider_name value returned by the provider’s endpoint. Это не очень понятно при заполнении, и вообще кажется, что ни на что не должно влиять, т.к. там есть и машинное имя провайдера.

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

Провайдер готов, теперь его нужно оформить как Media Source.

Provider Bucket

/admin/config/media/oembed-providers/buckets
В плагине oembed_providers медиа источники создаются через объявление «провайдерских ведер», что бы это не значило.

В бакете вы создаёте медиа источник, который может представлять сразу нескольких провайдеров. На форме будет показан весь список с oembed.com плюс созданный нами кастомный провайдер rutube. Отмечаем его галочкой.

Ведро я обозвал как — Rutube Provider.

Создаём тип медиа

/admin/structure/media/add
Теперь, когда мы создали медиа источник, основанный на кастомном провайдере rutube, мы можем создать новый медиа тип, который принимает объекты нужного нам типа.

Укажите название медиа типа и выберите медиа источник.

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

В секции field mapping не так много можно сделать как хотелось бы, обычно в выпадающем списке доступно только поле Name, которое сопоставляется с «Resourсe title».

Создание медиа контента

Теперь в медиа вам доступно создание новых элементов типа «Rutube Video Media Type».

Пример создания контента:

Обратите внимание, что URL должна заканчиваться на «/». Указанная нами схема и не позволит иного варианта, но некоторых смущают сообщения об ошибке вроде «The provided URL does not represent a valid oEmbed resource.», которые выводятся, если формат URL не соответствует шаблону.

Oembed подтянет иконку для видео автоматически. Вот так это примерно выглядит в медиа библиотеке:

Теперь можно создавать медиа поля в публикациях и прикреплять видосы с рутуба. Рендер будет зависеть от выбранного формата поля.

Rendered entity — выведет дефолтовый html, который передаётся oembed сервисом. Thumbnail — выведет тизер.

Написать комментарий

Мало букафф? Читайте есчо !

Добавляем в page cache зависимость от значения cookie

Март 4, 2025 г.

Модуль page_cache использует http_middleware, чтобы зацепиться за объект request и произвести кеширование страницы. Работает он для анонимных пользователей. ...

Читать

Кастомные настройки сайта в Drupal

Март 9, 2025 г.

На сайте всегда (или почти всегда) возникает задача управления настройками вроде телефон, email, какие то текстовые элементы, вроде копирайта, адрес организации и т.п. С точки зрения данных - требуется объект в терминах шаблонов проектирования - синглтон. ...

Читать

 

Комментарии к «Rutube: интегрируем как ombed provider source в Drupal»

Понравилась статья? Есть вопросы? - пишите в комментариях.



Комментарий: