Разработка блока "новинки" 1С-Битрикс

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Разработка блока "новинки" 1С-Битрикс
Средняя
~1-2 недели
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • 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С-Битрикс

Блок «Новинки» кажется простым виджетом, но за ним стоит ряд архитектурных решений, которые определяют, будет ли это живой инструмент продаж или статическая картинка с надписью «NEW». Задача — отображать актуальные новинки автоматически, без ручного обновления, с корректной работой кеша и без деградации производительности на каталогах с десятками тысяч товаров.

Как работает логика определения «новинок»

Есть несколько подходов, и выбор зависит от того, как в конкретном проекте управляют ассортиментом.

По дате добавления. Самый распространённый вариант. Товар считается новинкой, если разница между DATE_CREATE элемента инфоблока и текущей датой не превышает заданного порога (обычно 30–60 дней). Запрос строится через CIBlockElement::GetList или \Bitrix\Iblock\Elements\ElementTable с фильтром по DATE_CREATE:

'>=DATE_CREATE' => date('d.m.Y', strtotime('-30 days'))

По специальному свойству. Менеджер вручную помечает товары флагом «Новинка» через свойство типа «Checkbox» или список. Гибко, но требует дисциплины со стороны контент-команды. Для автоматического снятия флага через N дней добавляется агент, который обходит b_iblock_element_property и сбрасывает значение.

По тегированному признаку. Если в проекте есть редакционный контроль над ассортиментом (вручную определяют, что является новинкой), используют отдельную секцию инфоблока или группу смарт-фильтра. Логика проще, управление прозрачнее.

Компонент: стандартный vs кастомный

Стандартный bitrix:catalog.section умеет выбирать элементы по секции — но не по дате добавления. Для блока новинок правильнее брать bitrix:catalog.items (d7-компонент) или писать собственный компонент поверх \Bitrix\Iblock\Elements\ElementTable.

Кастомный компонент располагается в /local/components/vendor/catalog.new/. Структура:

catalog.new/
  component.php      — логика выборки
  templates/
    .default/
      template.php   — разметка
      style.css
      script.js

В component.php делаем выборку с кешем. Ключевое требование — тегированный кеш (\Bitrix\Main\Data\TaggedCache), чтобы при изменении любого товара из выборки блок инвалидировался, а не остальные страницы сайта.

$taggedCache = \Bitrix\Main\Application::getInstance()->getTaggedCache();
$taggedCache->startTagCache($cacheDir);
$taggedCache->registerTag('iblock_id_' . CATALOG_IBLOCK_ID);
// ... выборка ...
$taggedCache->endTagCache();

Производительность и кеш

Блок новинок появляется на главной странице, в шапке раздела, на карточке товара — в трёх местах сразу. Без кеша это три одинаковых запроса к БД при каждом хите. Настраиваем:

  • Кеш компонента — стандартный механизм CBitrixComponent, время кеширования 3600 секунд
  • Тегированный кеш — автоматическая инвалидация при обновлении товаров через 1С-обмен
  • Композитный кеш — если блок показывается неавторизованным пользователям, он попадает в статический HTML-кеш страницы

Проблема с персонализацией: если на сайте есть группы цен (розница, опт, дилеры), новинки для каждой группы могут отличаться. В этом случае ключ кеша включает GROUP_ID текущего пользователя, и для каждой группы формируется отдельный кеш-слой.

Интеграция с 1С-обменом

Если новинки управляются через дату добавления или флаг, который выгружается из 1С — важно проверить маппинг. В CommerceML дата создания может перезаписываться при каждом полном обмене, что «обнуляет» все товары и делает их новинками. Решение: запрет перезаписи DATE_CREATE в обработчике события OnBeforeIBlockElementUpdate или настройка обмена в режиме «не перезаписывать дату».

Отображение: карусель и адаптивность

Блок новинок часто реализуется как горизонтальная карусель с lazy-load. Загружаем 12–24 товара, отображаем 4–6 в зависимости от viewport. Для инициализации слайдера используем JS-обвязку (Swiper.js или собственная реализация). Важно: разметка карточки товара должна быть идентична той, что используется в каталоге — общий шаблон /local/templates/main/components/vendor/catalog.new/.default/item.php. Это позволяет переиспользовать стили и избежать дублирования вёрстки.

Кнопка «В корзину» в блоке новинок работает через AJAX-запрос к BXBuy.AddProductToBasket или напрямую к sale.basket.add REST API (для headless-сценариев). Счётчик корзины обновляется через BX.onCustomEvent('basketUpdated', ...).

Таблица сроков

Задача Срок
Блок на базе стандартного компонента с кастомным шаблоном 1–2 дня
Кастомный компонент с тегированным кешем и карусель 3–4 дня
+ Интеграция с группами цен и персонализация +1–2 дня
+ Агент для автоматического снятия флага новинки +0.5 дня

Итоговая архитектура: кастомный компонент в /local/, тегированный кеш, ключ кеша включает группу цен пользователя, JS-карусель с lazy-load, единый шаблон карточки товара. Ничего лишнего, работает быстро, обновляется автоматически.