Розробка сайту автодилера на 1С-Бітрікс
Ми розробляємо сайти автодилерів на 1С-Бітрікс, які конвертують відвідувачів у заявки. Наша команда — понад 12 років досвіду в розробці на Бітрікс, реалізовано понад 80 проєктів для автодилерів. Сайт автодилера — не просто каталог, а складний інструмент підбору. Відвідувач не додає машину в кошик — він підбирає, порівнює, рахує кредит, записується на тест-драйв. Середня сесія на дилерському сайті — 6–9 хвилин, 3–4 перемикання фільтрів, 2–3 відкриті картки. Якщо фільтр за маркою-моделлю гальмує, фотографії завантажуються по одній, а калькулятор кредиту вимагає перезавантаження — відвідувач іде на auto.ru. Ми будуємо архітектуру, яка не поступається агрегаторам за швидкістю, але залишається керованою з адмінки Бітрікса.
Архітектура каталогу: нові та з пробігом
Перше рішення — зберігати нові та вживані автомобілі в одному або різних інфоблоках. Один інфоблок з розділами за типами — підходить мультибрендовому дилеру до 2000 позицій: 80% властивостей збігаються, порожні властивості не роздувають таблицю b_iblock_element_property. Два інфоблоки — виправдані, коли нові автомобілі формуються через конфігуратор (марка → модель → комплектація), а б/в — конкретні VIN-екземпляри. Рекомендуємо для середнього дилера (500–3000 авто): інфоблок «Автомобілі» з розділами «Нові» та «З пробігом», Highload-блоки «Марки», «Моделі», «Покоління», «Комплектації», інфоблок «Акції».
Властивості автомобіля — мінімум 40 полів. Ключові для фільтрації та агрегаторів:
| Властивість | Код | Тип | Індексація |
|---|---|---|---|
| Марка | BRAND | S:Highload | Фасетний індекс |
| Модель | MODEL | S:Highload | Фасетний індекс |
| Рік випуску | YEAR | N (число) | Фасетний індекс |
| Ціна | PRICE | N | Фасетний індекс |
| Пробіг | MILEAGE | N | Фасетний індекс |
| Тип двигуна | ENGINE_TYPE | L (список) | Фасетний індекс |
| Об'єм двигуна | ENGINE_VOLUME | N | Фасетний індекс |
| Коробка передач | TRANSMISSION | L (МКПП, АКПП, робот, варіатор) | Фасетний індекс |
| Привід | DRIVE | L | Фасетний індекс |
| Кузов | BODY_TYPE | L | Фасетний індекс |
| Колір | COLOR | S | Фасетний індекс |
| VIN | VIN | S | Ні (точний збіг) |
| Статус | STATUS | L | Фасетний індекс |
| Фото | PHOTOS | F (множинне) | Ні |
| 360 екстер'єр | SPIN_360_URL | S | Ні |
| Панорама салону | INTERIOR_PANORAMA | S | Ні |
Чому каскадна фільтрація критична для каталогу?
Штатний bitrix:catalog.smart_filter показує всі значення всіх властивостей одночасно. Користувач обирає марку BMW — а в списку моделей висять Camry, Ceed. Це ламає UX. Потрібна каскадна фільтрація: обрав марку — моделі перерахувалися, обрав модель — покоління перерахувалися.
Варіант 1: кастомний AJAX-контролер. Окремий endpoint /api/catalog/filter-values/:
class FilterValuesController extends \Bitrix\Main\Engine\Controller
{
public function getModelsAction(int $brandId): array
{
$models = [];
$res = \CIBlockElement::GetList(
[],
['IBLOCK_ID' => CAR_IBLOCK_ID, 'ACTIVE' => 'Y', 'PROPERTY_BRAND' => $brandId],
['PROPERTY_MODEL' => 'CNT'],
false,
['PROPERTY_MODEL']
);
while ($row = $res->Fetch()) {
$models[] = ['id' => $row['PROPERTY_MODEL_VALUE'], 'count' => $row['CNT']];
}
return $models;
}
}
На фронті — BX.ajax.runAction, оновлення select моделі через Choices.js або Tom Select. Варіант 2: попереднє завантаження JSON-дерева залежностей — швидше, але не враховує актуальний сток. Комбінація: попереднє завантаження дерева + AJAX-перерахунок count при зміні будь-якого фільтра — оптимальний UX.
Для range-повзунків (ціна, пробіг, рік) — bitrix:catalog.smart_filter віддає MIN/MAX, на фронті noUiSlider, AJAX через bitrix:catalog.section.
Як уникнути помилок при генерації XML-фідів?
Авто-агрегатори — основне джерело трафіку. У кожного свій XML-формат і набір обов'язкових полів. auto.ru використовує формат cars.xml:
<cars>
<car>
<mark_id>BMW</mark_id>
<folder_id>X5</folder_id>
<modification_id>xDrive30d</modification_id>
<body_type>ALLROAD_5_DOORS</body_type>
<year>2024</year>
<run>0</run>
<color>ЧОРНИЙ</color>
<transmission>AUTOMATIC</transmission>
<engine_type>DIESEL</engine_type>
<engine_volume>3.0</engine_volume>
<price>7890000</price>
<currency>RUR</currency>
<vin>WBAJC51090B123456</vin>
<unique_id>car_12345</unique_id>
<images>
<image>https://site.ru/upload/cars/12345/photo1.jpg</image>
</images>
</car>
</cars>
Критичні поля: mark_id та folder_id мають збігатися з довідником агрегатора. Ми будуємо Highload-блок FeedMapping для трансляції значень (АКПП → AUTOMATIC для auto.ru, «Автоматична» для Avito). Генерація — абстрактний клас BaseFeedGenerator, конкретні реалізації для кожного формату. Агент запускається раз на 30–60 хвилин, файли в /upload/feeds/. Перед перезаписом — валідація XSD-схемою, при помилці — сповіщення менеджеру.
Порівняння автомобілів
Користувач додає до 4 машин у порівняння через кнопку в каталозі. ID зберігаються в localStorage (неавторизовані) або в Highload-блоці UserCompare (авторизовані). Компонент завантажує властивості за масивом ID, рендерить таблицю з підсвічуванням відмінностей.
Калькулятори trade-in та кредиту
Trade-in: форма оцінки — марка, модель, рік, пробіг, стан. На клієнті JavaScript бере базову ціну з Highload-блоку TradeInPrices та застосовує коефіцієнти. Точна оцінка — після огляду. Кредитний калькулятор — ануїтетна формула з повзунками, ставки з Highload-блоку «Банки-партнери».
Інтеграція з 1С та складський облік
Синхронізація через CommerceML (штатний обмін з 1С, доопрацювання маппінгу властивостей) або REST API 1С (HTTP-сервіс, оновлення кожні 15–30 хвилин). Ключ — VIN. Детальніше — в документації Бітрікс (CommerceML).
360-огляд та візуальний контент
360-огляд — набір 36–72 фото по колу, бібліотека SpriteSpin. Панорама салону — сферичне фото, перегляд через Pannellum.js. Файли зберігаються в /upload/cars/{ID}/360/.
Запис на тест-драйв та сервіс
Форма запису — через bitrix:form.result.new або REST API Бітрікс24 (crm.lead.add з джерелом TEST_DRIVE). Клієнт отримує SMS-підтвердження. Запис на сервіс — аналогічно з вибором виду робіт.
SEO та Schema.org
Кожна картка — посадкова сторінка. Шаблони SEO: title «Купити #BRAND# #MODEL# #YEAR# — #CITY# | Дилер», description з характеристиками. Мікророзмітка Schema.org Vehicle + Offer:
{
"@context": "https://schema.org",
"@type": "Vehicle",
"name": "BMW X5 xDrive30d",
"brand": {"@type": "Brand", "name": "BMW"},
"model": "X5",
"vehicleModelDate": "2024",
"mileageFromOdometer": {
"@type": "QuantitativeValue",
"value": "0",
"unitCode": "KMT"
},
"fuelType": "Diesel",
"vehicleTransmission": "Automatic",
"color": "Black",
"vehicleIdentificationNumber": "WBAJC51090B123456",
"image": ["https://site.ru/upload/cars/12345/photo1.jpg"],
"offers": {
"@type": "Offer",
"price": "7890000",
"priceCurrency": "RUB",
"availability": "https://schema.org/InStock",
"seller": {
"@type": "AutoDealer",
"name": "Назва дилера"
}
}
}
Що входить у проєкт
- Архітектурна документація (інфоблоки, Highload-блоки, маппінг властивостей).
- Доступи до адмінки, CRM, хостингу.
- Навчання менеджерів роботі з каталогом та фідами.
- Технічна підтримка на 30 днів після запуску.
- Вихідний код та інструкції з розгортання.
Етапи та терміни
| Масштаб | Терміни |
|---|---|
| Монобрендовий дилер, до 200 авто, базовий фільтр | 6–8 тижнів |
| Мультибрендовий дилер, 500–2000 авто, фіди + 1С | 10–14 тижнів |
| Дилерська мережа, 3000+ авто, мультисайтовість, CRM | 14–24 тижні |
Терміни не включають фото- та відеозйомку і підготовку 360-контенту — це паралельний процес.
Приклад економії з нашим рішенням
Завдяки правильному налаштуванню фільтрів та інтеграції з агрегаторами наші клієнти отримують у середньому на 30% більше заявок порівняно з типовими дилерськими сайтами.Оцінимо ваш проєкт і запропонуємо оптимальне рішення. Зв'яжіться з нами для консультації. Ми гарантуємо професійний підхід та сертифіковану команду зі стажем понад 12 років.







