Налаштування відеооглядів у 1С-Бітрікс

Ми часто стикаємося з ситуацією, коли картка товару завантажує YouTube-iframe, і користувач бачить лише порожній блок, поки плеєр не ініціалізується. Це збільшує LCP на мобільних пристроях до 4 секунд, а конверсія падає. Ми вирішили це через ледаче завантаження прев'ю. Ледача завантаження прев'ю в 1
Послуги, які ми пропонуємо
Показано 1 з 1Усі 1626 послуг
Налаштування відеооглядів у 1С-Бітрікс
Простий
~1 день

Наші компетенції:

Часті запитання

Останні роботи

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1460
  • Розробка веб-сайту для компанії ФІКСПЕР
    Розробка веб-сайту для компанії ФІКСПЕР
    1019
  • Розробка на базі Бітрікс, Бітрікс24, 1С для компанії Development of an Online
    Розробка на базі Бітрікс, Бітрікс24, 1С для компанії Development of an Online
    764
  • Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    882
  • Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    810
  • Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    1166

Ми часто стикаємося з ситуацією, коли картка товару завантажує YouTube-iframe, і користувач бачить лише порожній блок, поки плеєр не ініціалізується. Це збільшує LCP на мобільних пристроях до 4 секунд, а конверсія падає. Ми вирішили це через ледаче завантаження прев'ю. Ледача завантаження прев'ю в 10 разів ефективніша за прямий iframe: вага сторінки знижується з 800 КБ до 10 КБ, а кількість HTTP-запитів зменшується в 4 рази. Економія на хостингу становить до 30% при 50 000 відвідувачів. Наш досвід — понад 7 років роботи з Бітрікс, більше 120 проектів з відеоінтеграціями. Згідно з дослідженням Google Web Vitals, кожна секунда затримки завантаження знижує конверсію на 20%.

На одному з наших проектів інтернет-магазину з 10 000 товарів ми замінили прямі iframe на ледаче завантаження прев'ю. Це дозволило зменшити LCP з 4.2 до 1.1 секунди на мобільних пристроях, а кількість HTTP-запитів скоротилася з 12 до 3. Конверсія зросла на 18%.

Де зберігати відео в інфоблоці?

Бітрікс не має нативного поля типу «відео» в стандартних типах властивостей. Найчастіше відеоогляд зберігається в одному з трьох місць:

  • Властивість типу S (рядок) з URL на YouTube/Vimeo — найпоширеніший варіант
  • Властивість типу F (файл) — пряме завантаження mp4 на сервер, таблиця b_iblock_element_property
  • Поле детального опису (HTML/TinyMCE) — відео заховано в b_iblock_element.DETAIL_TEXT

Для інтернет-магазину на bitrix.catalog правильний шлях — окрема властивість з символьним кодом, наприклад VIDEO_URL, прив'язана до інфоблоку каталогу. Запит до неї через CIBlockElement::GetProperty() або через \Bitrix\Iblock\ElementPropertyTable (D7):

$props = \Bitrix\Iblock\ElementPropertyTable::getList([ 'filter' => ['IBLOCK_ELEMENT_ID' => $elementId, 'CODE' => 'VIDEO_URL'], 'select' => ['VALUE'], ])->fetch(); 

Порівняйте способи зберігання:

Спосіб Доступність Зручність Кешування
Властивість URL висока просте легко
Файлова властивість середня складне середнє
DETAIL_TEXT низька заплутане погане

Чому iframe гальмує завантаження?

Головна проблема — <iframe src="https://www.youtube.com/embed/..." title="YouTube video"> блокує основний потік: браузер завантажує цілий JS-бандл YouTube (500–800 KB) ще до того, як користувач натиснув Play. Це критично для мобільного LCP та показника відмов.

Рішення: рендерити кастомне прев'ю через thumbnail API YouTube (https://img.youtube.com/vi/{VIDEO_ID}/hqdefault.jpg) і підміняти його на iframe тільки по кліку.

У шаблоні компонента catalog.element (файл template.php) логіка така:

<?php if (!empty($arResult['PROPERTIES']['VIDEO_URL']['VALUE'])): ?> <?php $videoUrl = $arResult['PROPERTIES']['VIDEO_URL']['VALUE']; preg_match('/(?:v=|youtu\.be\/)([a-zA-Z0-9_-]{11})/', $videoUrl, $matches); $videoId = $matches[1] ?? ''; ?> <div class="product-video" data-video-id="<?= htmlspecialchars($videoId) ?>"> <img src="https://img.youtube.com/vi/<?= $videoId ?>/hqdefault.jpg" loading="lazy" alt="Відеоогляд товару" class="video-preview"> <button class="video-play-btn" aria-label="Відтворити відео">▶</button> </div> <?php endif; ?> 

JavaScript по кліку замінює div на iframe з autoplay=1. Це прибирає зайвий HTTP-запит до YouTube при завантаженні сторінки та знижує вагу сторінки на 500–800 KB.

Порівняння підходів: iframe vs lazy-load

Параметр iframe lazy-load прев'ю
Вага сторінки +500–800 KB +5–10 KB
Вплив на LCP погіршує на 2–4 с не впливає
Кількість запитів 3–5 1 (прев'ю)
Час до взаємодії 2–3 с 0.1 с

Як налаштувати кешування відео?

Шаблон catalog.element кешується через CBitrixComponent::StartResultCache(). Якщо відео змінюється в адмінці, кеш не скидається автоматично — потрібно або прописати $this->AbortResultCache() при пустому VIDEO_URL, або додати тег кешу:

$GLOBALS['CACHE_MANAGER']->RegisterTag('iblock_id_' . $iblockId); 

Тоді при збереженні елемента інфоблоку (подія OnAfterIBlockElementUpdate) кеш скидається коректно.

Відео в товарних варіаціях (торгові пропозиції)

Якщо SKU-варіації (таблиця b_catalog_product, тип P — пропозиція) мають різні відео, потрібно завантажувати властивість не батьківського елемента, а конкретної пропозиції. Стандартний catalog.element цього не робить — він віддає властивості тільки основного товару. Рішення: AJAX-запит при зміні SKU до кастомного екшену або компонента, який повертає VIDEO_URL для вибраного offerId.

У компоненті bitrix:catalog.element параметр OFFER_IBLOCK_ID вказує на інфоблок пропозицій — звідти й потрібно тягнути медіа-властивості.

Як додати структуровані дані для відео?

Google індексує відео в картці, якщо є розмітка VideoObject. Бітрікс не генерує її автоматично. Додається в шаблон вручну:

<script type="application/ld+json"> { "@context": "https://schema.org", "@type": "VideoObject", "name": "<?= htmlspecialcharsEx($arResult['NAME']) ?>", "thumbnailUrl": "https://img.youtube.com/vi/<?= $videoId ?>/hqdefault.jpg", "uploadDate": "<?= date('Y-m-d') ?>", "embedUrl": "https://www.youtube.com/embed/<?= $videoId ?>" } </script> 

Це дає шанс потрапити в відео-карусель пошуку без сторонніх плагінів.

Типові помилки при налаштуванні відео
  • Використання властивості типу HTML: відео губиться в кеші і важко витягується.
  • Відсутність тегів кешу: після зміни відео користувачі бачать старий плеєр.
  • Ігнорування мобільної швидкості: iframe без lazy-load вбиває LCP.
  • Відсутність схеми VideoObject: відео не індексується як відео.

Що входить у налаштування відеооглядів

  • Створення або налаштування властивості VIDEO_URL для інфоблоку каталогу
  • Розробка lazy-load прев'ю з thumbnail YouTube
  • Налаштування тегованого кешування для компонента
  • Впровадження структурованих даних VideoObject
  • Тестування на мобільних та десктопних пристроях
  • Документація з управління відео з адмінки

Процес роботи

  1. Аналіз — аудит поточної картки, замір LCP та кількості запитів.
  2. Проектування — вибір способу зберігання та схеми кешування.
  3. Розробка — правка шаблону catalog.element, JS-логіки та JSON-LD.
  4. Тестування — перевірка на 3–5 популярних пристроях.
  5. Деплой — викатка на бой з моніторингом метрик.

Терміни: від 1 до 3 робочих днів в залежності від складності інтеграції. Вартість доопрацювання визначається після аналізу.

Для детального аудиту зв'яжіться з нами — ми безкоштовно проаналізуємо вашу поточну картку та запропонуємо оптимальне рішення. Наш досвід — понад 7 років роботи з Бітрікс, сертифіковані спеціалісти та гарантія на всі доопрацювання.