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

Наша компанія займається розробкою, підтримкою та обслуговуванням рішень на Бітрікс та Бітрікс24 будь-якої складності. Від простих односторінкових сайтів до складних інтернет-магазинів, CRM систем з інтеграцією 1С та телефонії. Досвід розробників підтверджено сертифікатами від вендора.
Пропоновані послуги
Показано 1 з 1 послугУсі 1626 послуг
Розробка блоку "новинки" 1С-Бітрікс
Середня
~1-2 тижні
Часті питання

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

Етапи розробки

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

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

Розробка блока «Новинки» для 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, єдиний шаблон карточки товара. Ніяких зайвих, працює швидко, оновлюється автоматично.