Настройка видеогалереи на 1С-Битрикс

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Настройка видеогалереи на 1С-Битрикс
Простая
~1 рабочий день
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1181
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    813
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    564
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    747
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    976

Настройка видеогалереи на 1С-Битрикс

Видео на сайте — это либо внешние ссылки (YouTube, Vimeo), либо собственные файлы, размещённые на сервере или CDN. В обоих случаях Битрикс не предоставляет готового решения «видеогалерея» — придётся собирать из компонентов инфоблоков плюс дорабатывать шаблон.

Структура инфоблока для видеогалереи

Стандартный подход: создаётся инфоблок типа Видеогалерея с набором свойств. Минимальный набор свойств для видео-элемента:

  • VIDEO_URL — тип Строка, для ссылки на YouTube/Vimeo
  • VIDEO_FILE — тип Файл, для загруженных видеофайлов (mp4)
  • PREVIEW_IMAGE — тип Файл, превью-изображение (или используется стандартное PREVIEW_PICTURE элемента)
  • DURATION — тип Строка, длительность видео
  • VIDEO_TYPE — тип Список, значения: youtube, vimeo, local

Структура хранится в таблицах b_iblock_element и b_iblock_element_prop_s{iblock_id} (строковые свойства) / b_iblock_element_prop_m{iblock_id} (множественные). ID инфоблока фиксируйте в константе или в b_option, а не хардкодьте в каждом компоненте.

Компонент вывода: list + detail

Для списка видео используется bitrix:news.list или bitrix:catalog (если видео — часть каталога). Компонент вызывается с параметрами фильтрации по типу (FILTER), сортировки и пагинации.

В template.php списка для каждого элемента генерируете карточку с превью и кнопкой play. Если VIDEO_TYPE = youtube, из URL вида https://www.youtube.com/watch?v=XXXXXXXXXXX извлекаете ID видео и формируете превью через https://img.youtube.com/vi/{ID}/maxresdefault.jpg — это избавляет от необходимости отдельно загружать превью вручную.

Для детального просмотра — компонент bitrix:news.detail. В шаблоне проверяете тип видео и рендерите соответствующий плеер:

if ($arResult["PROPERTIES"]["VIDEO_TYPE"]["VALUE"] === "youtube") {
    $videoId = extractYoutubeId($arResult["PROPERTIES"]["VIDEO_URL"]["VALUE"]);
    echo '<iframe src="https://www.youtube.com/embed/' . $videoId . '?autoplay=1" ...></iframe>';
} elseif ($arResult["PROPERTIES"]["VIDEO_TYPE"]["VALUE"] === "local") {
    $fileUrl = CFile::GetPath($arResult["PROPERTIES"]["VIDEO_FILE"]["VALUE"]);
    echo '<video src="' . $fileUrl . '" controls></video>';
}

Загрузка локальных видеофайлов

Загрузка видео через стандартный файловый менеджер Битрикса работает, но имеет ограничения: upload_max_filesize и post_max_size в php.ini ограничивают размер. Для файлов > 100 МБ нужно либо поднимать лимиты, либо использовать загрузку через FTP с последующей привязкой через CFile::RegisterFile().

Хранить видео на том же сервере, что и веб-сайт — плохая практика при больших объёмах. Модуль bitrix:clouds позволяет настроить хранение файлов в S3-совместимом хранилище (Яндекс.Облако, Mail.ru Cloud и т.д.). После настройки все загружаемые файлы автоматически уходят в облако, а в БД хранится путь.

Ленивая загрузка и производительность

Видео — тяжёлый контент. Для галереи с превью используйте loading="lazy" для <img> превью, а сами плееры не встраивайте сразу — рендерьте <div> с превью и загружайте <iframe> только по клику:

document.querySelectorAll('.video-preview').forEach(el => {
    el.addEventListener('click', function() {
        this.innerHTML = '<iframe src="' + this.dataset.videoUrl + '?autoplay=1" ...></iframe>';
    });
});

Это критично при галерее из 20+ видео — без такого подхода страница делает 20+ запросов к YouTube при загрузке, что убивает производительность и может привести к блокировке от YouTube за превышение лимитов встроенных плееров.

Кеширование компонента bitrix:news.list с TTL 3600 секунд для видеогалереи оправдано — контент обновляется редко. Проверьте, что при добавлении нового видео через администратора кеш сбрасывается: по умолчанию CIBlockElement::Add() вызывает BXClearCache для соответствующего инфоблока.