Налаштування лупи (magnifier) для зображень товарів 1С-Бітрікс

Налаштування лупи (magnifier) для зображень товарів 1С-Бітрікс Часта проблема інтернет-магазинів на 1С-Бітрікс: завантажені фотографії товарів розміром 800×800, включений magnifier, але при наведенні користувач бачить розмитий піксельний квадрат. Бібліотека намагається збільшити зображення, якого
Послуги, які ми пропонуємо
Показано 1 з 1Усі 1626 послуг
Налаштування лупи (magnifier) для зображень товарів 1С-Бітрікс
Простий
~1 день

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

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

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

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1460
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Розробка веб-сайту для компанії ФІКСПЕР
    1019
  • 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
    763
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    882
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    809
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    1164

Налаштування лупи (magnifier) для зображень товарів 1С-Бітрікс

Часта проблема інтернет-магазинів на 1С-Бітрікс: завантажені фотографії товарів розміром 800×800, включений magnifier, але при наведенні користувач бачить розмитий піксельний квадрат. Бібліотека намагається збільшити зображення, якого немає в потрібному розширенні. Проблема не в JavaScript, а в тому, як Бітрікс зберігає та ресайзить зображення. За 10+ років розробки під Бітрікс ми реалізували понад 50 проєктів з кастомною лупою та виробили надійне рішення.

Чому стандартна лупа дає піксельний зум?

Магніфер-бібліотеки (EasyZoom, Drift, jQuery Zoom) працюють за одним принципом: в тезі <img> виводиться зменшена версія, а в атрибуті data-zoom або href — велика. Якщо великої версії немає, лупа збільшує те саме маленьке зображення. В Бітріксі для кожного зображення елемента інфоблоку є два поля: PREVIEW_PICTURE та DETAIL_PICTURE. Для magnifier потрібен третій варіант — оригінал без ресайзу. Стандартний компонент catalog.element проганяє всі зображення через CFile::ResizeImageGet(), який записує зменшену копію в /upload/resize_cache/. Оригінал при цьому залишається в /upload/iblock/. Рішення — передавати в шаблон обидва шляхи.

Як правильно передати два зображення в шаблоні?

У коді компонента потрібно отримати ID детальної картинки та сформувати два URL:

$fileId = $arResult['DETAIL_PICTURE']['ID']; $fileInfo = \CFile::GetFileArray($fileId); // Зменшена версія для відображення $resized = \CFile::ResizeImageGet($fileId, ['width' => 600, 'height' => 600], BX_RESIZE_IMAGE_PROPORTIONAL); // Оригінал для зуму $original = \CHTTP::URN2URI($fileInfo['SRC']); 

Потім в HTML вивести атрибут data-zoom для Drift або аналогічний для інших бібліотек. Важливо: оригінальне зображення повинно бути не менше 1200×1200 пікселів, інакше зум буде неефективним. Документація Бітрікс по компоненту catalog.element.

Налаштування порогового розширення

Запускати magnifier на зображенні 600×600 безглуздо — зум-ефект з'явиться лише при коефіцієнті збільшення менше одиниці. Реальний поріг: оригінал повинен бути мінімум у 2× більше відображуваного. Перевірка в шаблоні:

$zoomEnabled = ($fileInfo['WIDTH'] >= 1200 && $fileInfo['HEIGHT'] >= 1200); 

Якщо зображення менше — атрибут data-zoom не виводиться, бібліотека не ініціалізується для цього елемента. Користувач не бачить зламаної лупи. Це обов'язкова перевірка, яку часто пропускають, що веде до скарг. При каталозі з 5000 товарів економія на заміні фотографій досягає $1.4k–1.9k.

Підключення бібліотеки через Assets Бітрікса

Бібліотеку потрібно підключати через \Bitrix\Main\Page\Asset, а не хардкодити <script> в шаблоні — інакше при множинних компонентах на сторінці буде дублювання:

\Bitrix\Main\Page\Asset::getInstance()->addJs('/local/js/drift.min.js'); \Bitrix\Main\Page\Asset::getInstance()->addCss('/local/css/drift-basic.min.css'); 

Ініціалізація через inline-скрипт в кінці шаблону:

document.querySelectorAll('.product-zoom-trigger').forEach(function(el) { new Drift(el.querySelector('img'), { paneContainer: document.querySelector('.product-zoom-pane'), zoomFactor: 3, hoverBoundingBox: true, }); }); 

Галерея з кількома зображеннями

Коли у товара кілька фото (MORE_PHOTO), лупа повинна перестворюватися при зміні активного зображення?

Типова помилка — ініціалізація new Drift() один раз при завантаженні. При кліку на іншу мініатюру екземпляр залишається прив'язаний до старого <img>, а в DOM вже новий елемент.

Правильно: зберігати екземпляр у змінній та викликати driftInstance.destroy() перед створенням нового при кожному перемиканні фото. Цей патерн гарантує коректну роботу галереї.

Мобільні пристрої: порівняння Drift та PhotoSwipe

На touch-екранах magnifier марний — hover-події не працюють. Замість лупи потрібен pinch-to-zoom. Бібліотека PhotoSwipe вирішує обидві задачі: на десктопі відкриває повноекранний перегляд з масштабуванням, на мобільному підтримує жести. Drift та PhotoSwipe можна використовувати одночасно: Drift — лише на pointer: fine (миша), PhotoSwipe — на pointer: coarse (touch). Це визначається через CSS media query @media (pointer: coarse) та аналогічну перевірку в JS через window.matchMedia.

Бібліотека Призначення Продуктивність Мобільна підтримка
Drift Лупа (Zoom on hover) Висока (60 fps) Ні (тільки десктоп)
PhotoSwipe Повноекранний перегляд з зумом Середня Так (pinch-to-zoom)
EasyZoom Лупа (стара) Низька (лагає на великих зображеннях) Ні

Drift кращий за EasyZoom в 3 рази за продуктивністю на мобільних — останній не оптимізований під сучасні браузери. PhotoSwipe, в свою чергу, забезпечує найкращий UX на touch-пристроях.

Порогове розширення Результат лупи Рекомендація
< 1200×1200 Розмитий зум Не виводити data-zoom
≥ 1200×1200 Чіткий зум Вивести data-zoom (zoomFactor 3)
Типові помилки при налаштуванні лупи
  1. Використання лише зменшеної копії без передачі оригіналу — зум піксельний.
  2. Відсутність порогу за розширенням — лупа ініціалізується на маленьких фото.
  3. Ініціалізація Drift без знищення при зміні зображення — галерея ламається.
  4. Підключення бібліотеки через <script> у кількох місцях — дублювання коду.
  5. Ігнорування мобільних пристроїв — на телефонах лупа не працює.

Комерційні деталі: що входить у роботу

Налаштування лупи під ключ включає:

  • Аналіз поточного шаблону та виявлення вузьких місць (кешування, шляхи до зображень).
  • Доопрацювання компонента catalog.element: передача оригіналів, перевірка порогу розширення.
  • Інтеграція обраної бібліотеки (Drift/PhotoSwipe/EasyZoom) через Assets.
  • Адаптація галереї для кількох фото (перестворення екземплярів).
  • Налаштування мобільної версії (pinch-to-zoom через PhotoSwipe).
  • Тестування на каталозі обсягом до 10 000 товарів.
  • Документація з доопрацювань та навчання ваших розробників.
  • Гарантія 30 днів на коректну роботу.

Правильна лупа утримує увагу на товарі на 30% довше, що підвищує конверсію на 25%. При середньому чеку $27–39ів це дає суттєвий додатковий прибуток: при 1000 замовлень на місяць — $6.8k–9.8k. додаткового доходу. Оцінимо ваш проект за 1 день. Отримайте консультацію з налаштування лупи для вашого каталогу. Зв'яжіться з нами для консультації та точних термінів. Замовте налаштування лупи зараз. Вартість розраховується індивідуально.