Розробка промо-сайту на 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С-Bitrix

Промо-сайт — це короткоживучий або постійний сайт під конкретний продукт, акцію, захід. Головна його мета — конверсія: реєстрація, заявка, покупка. Технічно промо-сайт на Bitrix найчастіше означає односторінник (лендинг) із кількома секціями, формами захоплення лідів і, опціонально, інтеграцією з Bitrix24.

Коли промо на Bitrix, а не на конструкторі

Bitrix обирають для промо-сайту, якщо:

  • Основний сайт вже на Bitrix — промо розміщують на піддомені або в папці, використовуючи ту ж CMS.
  • Потрібна інтеграція з CRM (Bitrix24) без зайвих прошарків — форми одразу створюють ліди.
  • Промо-сайт планується використовувати багаторазово з різним контентом (акції, події).
  • Контент промо має редагуватися в редакторі Bitrix без розробника.

Архітектура промо-сайту

Для промо на Bitrix можливі два підходи:

1. Окремий шаблон на основному сайті. Створюється новий шаблон у /local/templates/promo_EVENTNAME/. У header.php та footer.php — мінімальна обгортка, без основного навігаційного меню. Сторінка /promo/event-name/index.php підключає цей шаблон через $APPLICATION->SetTemplate().

2. Окремий сайт у складовому сайті. Якщо промо на піддомені promo.example.com — створюється новий сайт в адміністративній частині (Налаштування → Сайти → Список сайтів). Свій шаблон, свої налаштування, свої поштові події.

Редаговані секції через інфоблок

Щоб маркетолог міг змінювати контент промо без розробника — розміщуємо редаговані блоки через інфоблок promo_sections:

// Секції промо-сторінки
$sections = \CIBlockElement::GetList(
    ['SORT' => 'ASC'],
    [
        'IBLOCK_ID' => PROMO_SECTIONS_IBLOCK_ID,
        'ACTIVE'    => 'Y',
        'PROPERTY_PROMO_ID' => $promoId,
    ],
    false,
    false,
    ['ID', 'NAME', 'CODE', 'DETAIL_TEXT', 'PROPERTY_SECTION_TYPE', 'PROPERTY_BG_IMAGE', 'PROPERTY_CTA_TEXT', 'PROPERTY_CTA_URL']
);

Властивості елементу-секції: тип секції (hero, features, testimonials, cta, faq), фонове зображення, текст CTA-кнопки, її URL. У шаблоні — switch за SECTION_TYPE, що підключає відповідний include:

while ($section = $sections->GetNext()) {
    $sectionType = $section['PROPERTY_SECTION_TYPE_VALUE'];
    $sectionFile = __DIR__ . '/sections/' . $sectionType . '.php';
    if (file_exists($sectionFile)) {
        include $sectionFile;
    }
}

Форми захоплення лідів

На промо-сайті кілька точок конверсії: форма в hero-секції, форма в кінці сторінки, спливаюча форма при спробі піти (exit-intent). Всі вони відправляють дані на один обробник:

// /local/ajax/promo_lead.php

\Bitrix\Main\Loader::includeModule('crm');

$promoId = htmlspecialchars($_POST['promo_id'] ?? '');
$name    = htmlspecialchars(trim($_POST['name'] ?? ''));
$phone   = htmlspecialchars(trim($_POST['phone'] ?? ''));
$email   = htmlspecialchars(trim($_POST['email'] ?? ''));

// Джерело фіксується для аналітики
$source = htmlspecialchars($_POST['form_position'] ?? 'unknown'); // hero | bottom | popup

if (empty($phone) && empty($email)) {
    echo json_encode(['error' => 'Вкажіть телефон або email']);
    exit;
}

$lead = new \CCrmLead(false);
$leadId = $lead->Add([
    'TITLE'              => 'Промо: ' . $promoId . ' — ' . $name,
    'NAME'               => $name,
    'PHONE'              => [['VALUE' => $phone, 'VALUE_TYPE' => 'WORK']],
    'EMAIL'              => [['VALUE' => $email, 'VALUE_TYPE' => 'WORK']],
    'SOURCE_ID'          => 'WEB',
    'SOURCE_DESCRIPTION' => 'Промо: ' . $promoId . ', форма: ' . $source,
    'UTM_SOURCE'         => $_COOKIE['utm_source'] ?? '',
    'UTM_MEDIUM'         => $_COOKIE['utm_medium'] ?? '',
    'UTM_CAMPAIGN'       => $_COOKIE['utm_campaign'] ?? '',
]);

echo json_encode(['success' => (bool)$leadId]);

UTM-мітки. При заході на промо-сторінку — зберігати UTM у cookie через JS (30 хвилин). При відправці форми — передавати із запитом. У ліді Bitrix24 доступні поля UTM_SOURCE, UTM_MEDIUM, UTM_CAMPAIGN, UTM_TERM, UTM_CONTENT — використовуємо їх.

Таймер зворотного відліку

Важливий елемент промо — таймер до кінця акції. Реалізується на JS з урахуванням серверного часу (не локального часу браузера):

// У шаблоні PHP передаємо серверну дату закінчення
$promoEndDate = '2026-04-01T23:59:59+03:00';
echo '<script>window.PROMO_END_DATE = "' . $promoEndDate . '";</script>';
// Timer component
function startCountdown(endDateStr) {
    const endDate = new Date(endDateStr);
    const timer   = setInterval(() => {
        const now  = new Date();
        const diff = endDate - now;

        if (diff <= 0) {
            clearInterval(timer);
            document.getElementById('timer').textContent = 'Акція завершена';
            return;
        }

        const days    = Math.floor(diff / 86400000);
        const hours   = Math.floor((diff % 86400000) / 3600000);
        const minutes = Math.floor((diff % 3600000) / 60000);
        const seconds = Math.floor((diff % 60000) / 1000);

        document.getElementById('timer-days').textContent    = String(days).padStart(2, '0');
        document.getElementById('timer-hours').textContent   = String(hours).padStart(2, '0');
        document.getElementById('timer-minutes').textContent = String(minutes).padStart(2, '0');
        document.getElementById('timer-seconds').textContent = String(seconds).padStart(2, '0');
    }, 1000);
}

A/B тестування

Для промо-сайтів A/B тест критичний. Проста реалізація без зовнішніх сервісів: ділимо відвідувачів на групи через cookie.

// Визначити варіант для користувача
if (!isset($_COOKIE['promo_variant'])) {
    $variant = rand(0, 1) ? 'A' : 'B';
    setcookie('promo_variant', $variant, time() + 86400 * 30, '/');
} else {
    $variant = $_COOKIE['promo_variant'];
}

// Підключити потрібний шаблон
$templateFile = __DIR__ . '/variants/' . $variant . '.php';
include $templateFile;

Результати конверсії — через окремий лічильник у таблиці b_local_promo_ab_stats з полями: PROMO_ID, VARIANT, VIEWS, CONVERSIONS.

Кешування та продуктивність

Промо-сайт може отримати піковий трафік (розсилка, рекламна кампанія). Заздалегідь налаштовуємо:

  • Повносторінкове кешування через nginx FastCGI cache для анонімних користувачів.
  • Cache-Control: public, max-age=3600 для статики.
  • Попереднє прогрівання кешу після деплою.
  • Обмеження AJAX-запитів на сервері (rate limiting nginx: limit_req_zone).

Терміни розробки

Варіант Склад Термін
Лендинг за готовим макетом Верстка + форма + лід у CRM 3–5 днів
З редагованим контентом + Інфоблок секцій, управління через адмінку 5–8 днів
Повнофункціональний промо + Таймер, A/B тест, аналітика UTM 8–14 днів