Интеграция Rutube-видео в карточку товара 1С-Битрикс
Мы сталкиваемся с ситуацией: клиент просит добавить видеообзоры в карточку товара, но YouTube заблокирован или медленно грузится. Rutube — российская платформа, всё чаще используемая в e-commerce. Технически интеграция отличается: другой формат Video ID, структура embed-ссылок, отсутствие публичного CDN для превью. Разберём реализацию без лишних зависимостей — под ключ.
Почему стоит интегрировать Rutube?
Rutube даёт преимущества для российского трафика: серверы в РФ, высокая скорость загрузки, индексация в Яндексе. По нашим замерам, скорость загрузки плеера на 30% выше, чем у YouTube из-за меньшей задержки. Кроме того, Rutube не требует дополнительных лицензий и встраивается в любой тариф Битрикс. Экономия на CDN-трафике может достигать $18–26 в месяц.
Как мы это делаем: разбор на реальном кейсе
Один из наших клиентов — интернет-магазин электроники с каталогом из 5000 товаров — попросил подключить Rutube-видео к каждой карточке. Требовалось вывести превью с ленивой загрузкой для видеообзоров. Срок — 2 дня. Мы использовали PHP 8.1, Битрикс 22.0, тегированный кэш. Результат: страницы стали грузиться на 15% быстрее за счёт facade-паттерна.
Техническая реализация
Структура URL и Video ID Rutube
Rutube использует UUID (32 символа без дефисов) в качестве идентификатора видео. Форматы ссылок:
-
https://rutube.ru/video/a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4/— стандартный URL -
https://rutube.ru/play/embed/a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4— уже embed-ссылка
Парсинг Video ID и получение embed-ссылки:
function parseRutubeId(string $url): ?string { if (preg_match( '/rutube\.ru\/(?:video|play\/embed)\/([a-f0-9]{32})/', $url, $m )) { return $m[1]; } return null; } function getRutubeEmbedUrl(string $videoId): string { return 'https://rutube.ru/play/embed/' . $videoId . '?rel=0&showControls=1&skinColor=ff0000&startFrom=0&mute=0'; } Параметры embed у Rutube: rel (не показывать похожие видео), skinColor (цвет плеера в HEX без #), mute. Набор скромнее YouTube.
Хранение в инфоблоке Битрикс
Аналогично YouTube — свойство типа «Строка» с кодом VIDEO_RUTUBE, при необходимости множественное:
CIBlockProperty::Add([ 'IBLOCK_ID' => CATALOG_IBLOCK_ID, 'NAME' => 'Rutube-видео', 'CODE' => 'VIDEO_RUTUBE', 'PROPERTY_TYPE' => 'S', 'MULTIPLE' => 'Y', 'SORT' => 210, ]); Если на проекте используются оба источника, заводим универсальное свойство VIDEO_URL и определяем платформу по домену URL.
Получение thumbnail через API
В отличие от YouTube, у Rutube нет публичного CDN для превью. Thumbnail получаем через API:
function getRutubeVideoInfo(string $videoId): ?array { $cacheKey = 'rutube_' . $videoId; $cache = \Bitrix\Main\Data\Cache::createInstance(); if ($cache->initCache(3600 * 24, $cacheKey, '/rutube/')) { return $cache->getVars(); } $http = new \Bitrix\Main\Web\HttpClient(); $response = $http->get("https://rutube.ru/api/video/{$videoId}/?format=json"); if ($http->getStatus() !== 200) { return null; } $data = json_decode($response, true); if (empty($data['id'])) { return null; } $result = [ 'id' => $data['id'], 'title' => $data['title'] ?? '', 'thumbnail_url' => $data['thumbnail_url'] ?? '', 'duration' => $data['duration'] ?? 0, ]; $cache->startDataCache(3600 * 24, $cacheKey, '/rutube/'); $cache->endDataCache($result); return $result; } Кэш на 24 часа обязателен — частые запросы при высоком трафике создают нагрузку. Согласно документации Rutube API, запрос не требует аутентификации.
Вывод в шаблоне карточки товара
Используем facade-паттерн: сначала показываем превью, при клике подгружаем iframe. Это ускоряет загрузку страницы на 40%.
$rutubeUrls = (array)($arResult['PROPERTIES']['VIDEO_RUTUBE']['VALUE'] ?? []); foreach ($rutubeUrls as $rutubeUrl) { $videoId = parseRutubeId($rutubeUrl); if (!$videoId) continue; $info = getRutubeVideoInfo($videoId); $thumbUrl = $info['thumbnail_url'] ?? '/local/img/video-placeholder.jpg'; $embedUrl = getRutubeEmbedUrl($videoId); echo '<div class="rutube-facade" data-embed="' . htmlspecialchars($embedUrl) . '">'; echo '<img src="' . htmlspecialchars($thumbUrl) . '" alt="' . htmlspecialchars($info['title'] ?? 'Видеообзор') . '" loading="lazy" width="640" height="360">'; echo '<button class="play-btn" aria-label="Смотреть видео"></button>'; echo '</div>'; } JavaScript-инициализация facade:
document.querySelectorAll('.rutube-facade').forEach(function(el) { el.addEventListener('click', function() { const iframe = document.createElement('iframe'); iframe.src = this.dataset.embed + '&autoplay=1'; iframe.width = '640'; iframe.height = '360'; iframe.allowFullscreen = true; iframe.allow = 'autoplay; encrypted-media'; this.replaceWith(iframe); }); }); Для чего нужна SEO-разметка VideoObject?
Поисковики лучше ранжируют страницы с видео, если указана разметка VideoObject. Мы добавляем JSON-LD в <head>: название, превью, длительность, дата загрузки. Яндексу это помогает показывать видео в выдаче.
Сравнение YouTube и Rutube
| Параметр | YouTube | Rutube |
|---|---|---|
| Скорость загрузки для РФ | Средняя (серверы за рубежом) | Высокая (серверы в РФ) |
| API для превью | Есть (без ключа) | Есть (без ключа) |
| CDN для превью | Есть | Нет |
| Индексация в Яндексе | Хорошая | Хорошая |
| Ограничения по контенту | Есть (возрастные, региональные) | Минимальные |
Rutube выигрывает по скорости для российских пользователей, но требует дополнительного запроса для превью.
Процесс работы и сроки
- Аналитика — изучаем каталог, объём видео, текущую инфраструктуру.
- Проектирование — выбираем тип свойства (один URL или множественное), решаем, нужен ли unison с YouTube.
- Реализация — добавляем свойство, пишем парсинг, API-запросы, шаблон и JS.
- Тестирование — проверяем на 10+ товарах, с разными видео, с кэшем и без.
- Деплой и документация — выкатываем на прод, передаём доступы и инструкцию.
Базовая интеграция занимает 0,5 дня, с превью и facade — 1–2 дня, универсальное решение — 2–3 дня. Стоимость рассчитывается индивидуально, ориентировочный диапазон — от $150–400.
Что входит в работу
| Компонент | Описание | Время (дни) |
|---|---|---|
| Свойство инфоблока | Множественное или одиночное | 0,1 |
| Парсинг ID Rutube | Для всех форматов ссылок | 0,3 |
| Получение превью через API | С кэшированием на 24 часа | 0,5 |
| Facade-плеер | Ленивая загрузка, превью | 0,5 |
| SEO-разметка VideoObject | JSON-LD валидный | 0,3 |
| Интеграция с YouTube | Опционально | 0,5 |
| Тестирование | На 5+ товарах | 0,3 |
| Документация | Инструкция по добавлению видео | 0,2 |
| Поддержка после запуска | 1 месяц | — |
Если вам нужна интеграция Rutube-видео в карточку товара, свяжитесь с нами — мы подготовим индивидуальное предложение и оценим сроки. Опыт нашей команды — 6+ лет, 35+ проектов по интеграции видео.







