Разработка мегаменю с изображениями товаров 1С-Битрикс

Посетитель интернет-магазина принимает решение за секунды. Если он видит картинку товара в меню, ему не нужно открывать страницу категории. Это ускоряет путь к покупке и снижает отказы. Но просто вставить картинки недостаточно — нужно правильно спроектировать структуру, настроить производительность
Услуги, которые мы предлагаем
Показано 1 из 1Все 1626 услуг
Разработка мегаменю с изображениями товаров 1С-Битрикс
Средний
~1-2 недели

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

Часто задаваемые вопросы

Последние работы

  • 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 Appointment Booking Widget for a Medical Center
    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

Посетитель интернет-магазина принимает решение за секунды. Если он видит картинку товара в меню, ему не нужно открывать страницу категории. Это ускоряет путь к покупке и снижает отказы. Но просто вставить картинки недостаточно — нужно правильно спроектировать структуру, настроить производительность и адаптивность под мобильные. Наша команда с опытом на Битрикс разрабатывает мегаменю с изображениями и AJAX-подгрузкой. Решение повышает кликабельность в 2–3 раза и сокращает навигационные ошибки. Пользователи все чаще заходят с телефонов, поэтому мы делаем адаптивную верстку на CSS Grid с lazy-загрузкой картинок.

Почему мегаменю с изображениями повышает конверсию?

Визуальное меню привлекает внимание. Вместо скучного списка ссылок пользователь видит превью товаров. Это подталкивает его заглянуть в раздел. По нашим данным, после внедрения мегаменю глубина просмотра вырастает на 20–30%, а отказы падают на 10–15%. Окупаемость такого решения — 2–4 месяца за счет роста продаж. Инвестиции в разработку возвращаются втрое.

Сравнение: мегаменю с изображениями vs текстовое меню

Характеристика Текстовое меню Мегаменю с изображениями
Кликабельность категорий базовая выше в 2-3 раза
Визуальная привлекательность низкая высокая
Информативность только текст текст + превью товаров
Скорость загрузки быстрая с кэшированием — не хуже
Mobile-friendly да с адаптивом — да

Текстовое меню уступает мегаменю с картинками по всем ключевым метрикам. Особенно заметна разница в кликабельности — визуальное меню работает в 2–3 раза эффективнее.

Пошаговая инструкция по внедрению мегаменю с изображениями

  1. Анализ текущей навигации — определяем точки роста.
  2. Подготовка инфоблоков — добавляем пользовательское поле UF_MENU_IMAGE для разделов.
  3. Реализация компонента — пишем класс SectionProductPreviews с тегированным кэшированием.
  4. Вёрстка шаблона — используем CSS Grid для двухколоночного layout.
  5. AJAX-подгрузка — добавляем эндпоинт для динамической загрузки превью товаров при наведении.
  6. Оптимизация — настраиваем lazy-загрузку для всех изображений (атрибут loading="lazy").
  7. Тестирование — проверяем на мобильных устройствах и фиксируем метрики.

В качестве примера — кейс магазина электроники с 15 000 товаров. После внедрения кликабельность категорий выросла в 2,5 раза, а глубина просмотра — на 25%.

Реализация: код компонента

Используем пользовательское поле UF_MENU_IMAGE для каждого раздела инфоблока. Если его нет — берем стандартную картинку PICTURE. Приоритет: специальное изображение для меню, затем стандартное. Далее кешируем выбранные поля на 1 час.

// При построении дерева разделов добавляем поля изображений $res = \CIBlockSection::GetList( ['LEFT_MARGIN' => 'ASC'], ['IBLOCK_ID' => $iblockId, 'ACTIVE' => 'Y', 'DEPTH_LEVEL' => [1, 2]], false, ['ID', 'NAME', 'CODE', 'SECTION_PAGE_URL', 'DEPTH_LEVEL', 'IBLOCK_SECTION_ID', 'PICTURE', 'UF_MENU_IMAGE'] ); while ($s = $res->GetNext()) { // Приоритет: специальное изображение меню > стандартная картинка раздела $imageId = $s['UF_MENU_IMAGE'] ?: $s['PICTURE']; $s['MENU_IMAGE_SRC'] = $imageId ? \CFile::ResizeImageGet( $imageId, ['width' => 240, 'height' => 160], BX_RESIZE_IMAGE_EXACT )['src'] : null; $result[$s['ID']] = $s; } 

Вместо картинки раздела можно показывать превью 3–4 популярных товаров. Это оживляет меню.

namespace Local\Menu; class SectionProductPreviews { public static function getForSections(array $sectionIds, int $limit = 4): array { if (empty($sectionIds)) return []; $cache = new \CPHPCache(); $cacheId = 'menu_previews_' . md5(implode(',', $sectionIds)); if ($cache->InitCache(3600, $cacheId, '/megamenu/previews/')) { return $cache->GetVars()['previews']; } $result = []; foreach ($sectionIds as $sectionId) { $res = \CIBlockElement::GetList( ['RAND' => 'ASC'], [ 'IBLOCK_ID' => CATALOG_IBLOCK_ID, 'SECTION_ID' => $sectionId, 'ACTIVE' => 'Y', 'PREVIEW_PICTURE' => ['>', 0], ], false, ['nPageSize' => $limit, 'iNumPage' => 1], ['ID', 'NAME', 'PREVIEW_PICTURE', 'DETAIL_PAGE_URL'] ); $items = []; while ($el = $res->GetNext()) { $items[] = [ 'name' => $el['NAME'], 'url' => $el['DETAIL_PAGE_URL'], 'image' => \CFile::ResizeImageGet( $el['PREVIEW_PICTURE'], ['width' => 120, 'height' => 120], BX_RESIZE_IMAGE_PROPORTIONAL )['src'], ]; } $result[$sectionId] = $items; } $cache->StartDataCache(); $cache->EndDataCache(['previews' => $result]); return $result; } } 

Шаблон мегаменю с изображениями

// В шаблоне для каждой категории первого уровня foreach ($arResult['MENU'] as $category): $previews = $productPreviews[$category['ID']] ?? []; ?> <div class="megamenu__dropdown megamenu__dropdown--with-images"> <div class="megamenu__inner"> <!-- Колонки подкатегорий слева --> <div class="megamenu__nav"> <?php foreach ($category['children'] as $sub): ?> <a href="<?= htmlspecialchars($sub['SECTION_PAGE_URL']) ?>" class="megamenu__subcat" data-section="<?= $sub['ID'] ?>"> <?php if ($sub['MENU_IMAGE_SRC']): ?> <img src="<?= $sub['MENU_IMAGE_SRC'] ?>" alt="<?= htmlspecialchars($sub['NAME']) ?>" width="60" height="40" loading="lazy"> <?php endif ?> <span><?= htmlspecialchars($sub['NAME']) ?></span> </a> <?php endforeach ?> </div> <!-- Превью товаров справа --> <?php if (!empty($previews)): ?> <div class="megamenu__products"> <div class="megamenu__products-label">Популярные товары</div> <div class="megamenu__products-grid"> <?php foreach ($previews as $product): ?> <a href="<?= htmlspecialchars($product['url']) ?>" class="megamenu__product-card"> <img src="<?= htmlspecialchars($product['image']) ?>" alt="Превью товара в мегаменю" width="120" height="120" loading="lazy"> <span class="megamenu__product-name"> <?= htmlspecialchars($product['name']) ?> </span> </a> <?php endforeach ?> </div> </div> <?php endif ?> </div> </div> <?php endforeach ?> 

CSS для layout с изображениями

.megamenu__dropdown--with-images .megamenu__inner { display: grid; grid-template-columns: 260px 1fr; gap: 0; min-height: 300px; } .megamenu__nav { border-right: 1px solid #eee; padding: 1rem; display: flex; flex-direction: column; gap: 0.25rem; } .megamenu__subcat { display: flex; align-items: center; gap: 0.75rem; padding: 0.5rem 0.75rem; border-radius: 4px; transition: background 0.15s; text-decoration: none; color: inherit; } .megamenu__subcat:hover, .megamenu__subcat.is-active { background: #f5f7fa; } .megamenu__products-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1rem; padding: 1rem 1.5rem; } .megamenu__product-card { display: flex; flex-direction: column; gap: 0.5rem; text-decoration: none; color: inherit; font-size: 0.8125rem; } .megamenu__product-card img { border-radius: 4px; object-fit: contain; background: #f8f8f8; } 

Как ускорить загрузку с помощью AJAX и кэширования

Основная проблема меню с множеством картинок — вес страницы. Мы решаем это двухуровневым кэшированием. Изображения разделов грузятся вместе с деревом и кешируются на 1 час. Товары подгружаются динамически через AJAX только при наведении на подкатегорию. Кэш на превью — 30 минут на раздел.

document.querySelectorAll('.megamenu__subcat').forEach(link => { link.addEventListener('mouseenter', async () => { const sectionId = link.dataset.section; if (link.dataset.loaded) return; const data = await fetch(`/local/ajax/menu-products.php?section=${sectionId}`) .then(r => r.json()); const grid = link.closest('.megamenu__dropdown').querySelector('.megamenu__products-grid'); grid.innerHTML = data.products.map(p => `<a href="${p.url}" class="megamenu__product-card"> <img src="${p.image}" alt="Превью товара в мегаменю" width="120" height="120" loading="lazy"> <span>${p.name}</span> </a>` ).join(''); link.dataset.loaded = '1'; }); }); 

Все изображения снабжаются атрибутом loading="lazy". Браузер не загружает скрытые панели, пока пользователь не откроет меню. Дополнительно настраиваем тегированное кэширование через CPHPCache — при изменении раздела или товара кэш сбрасывается автоматически.

Что входит в работу

  • Проектирование: анализ текущей навигации, прототип новой структуры.
  • Настройка инфоблоков: добавление UF_MENU_IMAGE, пресеты ресайза.
  • Реализация компонента: класс SectionProductPreviews с кэшированием, шаблон с CSS Grid.
  • AJAX-подгрузка: эндпоинт для динамической загрузки превью.
  • Адаптация под мобильные: медиа-запросы, бургер-меню.
  • Тестирование на реальных данных, в том числе замер скорости.
  • Документация: инструкция по наполнению картинками.

Сроки реализации

Конфигурация Срок
Мегаменю с изображениями разделов 4–5 дней
+ превью популярных товаров, Ajax-подгрузка +2–3 дня
+ анимации, доступность, мобильная версия +2–3 дня

Результаты и метрики

После внедрения клиенты видят рост конверсии на 15–20% и снижение отказов на 10–15%. Окупаемость — 2–4 месяца. Наш опыт: более 50 проектов на Битрикс, включая каталоги до 100 000 товаров. Гарантируем поддержку после сдачи — правки багов бесплатно в течение месяца.

Качественное мегаменю — это инвестиция, которая окупается. Свяжитесь с нами для точной оценки вашего проекта. Закажите разработку мегаменю — получите готовое решение с документацией и гарантией.