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 — выведет тизер.

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

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

Добавить произвольную ссылку в меню на этапе препросессинга в Drupal

Март 17, 2025 г.

Иногда бывает потребность создать ссылку из кода. Структура ссылки довольно сложная на этапе препроцессинга шаблона меню, делюсь сниппетом кода. Потребуются следующие зависимости: [crayon-67ee156d68b7a643880877/] Добавим ссылку в меню main. ...

Читать

Рендер произвольного блока в Drupal 11

Март 13, 2025 г.

Если не хочется объявлять дополнительный регион, чтобы настроить вывод блока через админку, то можно сделать рендер блока программно. Например добавим в препроцессинг страницы переменную с рендером блока branding. Этот блок предоставляется модулем ...

Читать

 

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

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



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