Кастомізація шаблонів стандартних компонентів 1С-Бітрікс

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

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

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

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

  • 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С-Бітрікс

Стандартні компоненти 1С-Бітрікс працюють з коробки, але їхній зовнішній вигляд майже завжди не відповідає макету. Перший інстинкт — редагувати файли в /bitrix/components/bitrix/ — призводить до втрати змін при оновленні ядра. Правильний шлях: кастомні шаблони компонентів у /local/ або в папці шаблону сайту.

Кастомізація шаблонів стандартних компонентів 1С-Бітрікс

Структура шаблонів компонентів

Кожен компонент має папку templates/ із шаблонами. Шаблон .default — використовується за замовчуванням. 1С-Бітрікс шукає шаблон компонента в такому порядку:

  1. /local/templates/<шаблон_сайту>/components/<namespace>/<компонент>/<шаблон>/
  2. /local/components/<namespace>/<компонент>/templates/<шаблон>/
  3. /bitrix/templates/<шаблон_сайту>/components/...
  4. /bitrix/components/<namespace>/<компонент>/templates/<шаблон>/

Це означає: достатньо створити потрібну структуру папок у /local/ і покласти туди перевизначений файл. Оригінал у /bitrix/ залишається незайманим.

Створення кастомного шаблону

Розбір на прикладі bitrix:catalog.element — картка товару.

Дивимося оригінал:

/bitrix/components/bitrix/catalog.element/templates/.default/template.php

Створюємо кастомний шаблон:

/local/templates/my_site/components/bitrix/catalog.element/.default/template.php
/local/templates/my_site/components/bitrix/catalog.element/.default/style.css
/local/templates/my_site/components/bitrix/catalog.element/.default/script.js

У template.php доступні всі змінні, підготовлені компонентом: $arResult, $arParams, $arCurrentValues. Переглядати їхній склад через \Bitrix\Main\Diag\Debug::dump($arResult) або компонент bitrix:diag.phpinfo.

Підключення шаблону у виклику компонента

<?$APPLICATION->IncludeComponent(
    "bitrix:catalog.element",
    ".default", // ім'я шаблону
    [
        "IBLOCK_TYPE" => "catalog",
        "IBLOCK_ID"   => 12,
    ],
    false
);?>

Якщо потрібен окремий шаблон для конкретної сторінки або секції, створюємо шаблон із довільним іменем, наприклад card_v2, та вказуємо його при виклику.

Кастомізація шаблонів комплексних компонентів

Комплексні компоненти (bitrix:catalog, bitrix:news) складаються з кількох підключуваних компонентів. Шаблон комплексного компонента містить component_epilog.php і підпапки для субкомпонентів.

/local/templates/my_site/components/bitrix/catalog/.default/
    template.php
    component_epilog.php
    bitrix/
        catalog.section/
            .default/
                template.php
        catalog.element/
            .default/
                template.php

Це дозволяє перевизначити верстку розділу та картки в рамках одного шаблону каталогу.

result_modifier.php і component_epilog.php

Два файли, які дають доступ до даних компонента без перевизначення його логіки:

result_modifier.php — виконується після основного коду компонента, до шаблону. Тут можна змінити $arResult:

// result_modifier.php
if (!empty($arResult['ITEMS'])) {
    foreach ($arResult['ITEMS'] as &$item) {
        $item['PRICE_FORMATTED'] = number_format($item['CATALOG_PRICE_1'], 0, '.', ' ') . ' ₽';
    }
}

component_epilog.php — виконується після шаблону. Використовується для фінальних маніпуляцій: встановлення заголовка сторінки, додавання breadcrumbs, підключення скриптів.

Підключення CSS і JS у шаблоні компонента

// У template.php
$this->addCSS($this->GetFolder() . '/style.css');
$this->addJS($this->GetFolder() . '/script.js');

// Або через Asset Manager для об'єднання файлів
\Bitrix\Main\Page\Asset::getInstance()->addCss($this->GetFolder() . '/style.css');

Терміни

Завдання Терміни
Кастомний шаблон одного компонента (картка, список) 4–16 годин
Шаблони всіх компонентів каталогу під макет 3–5 днів
Кастомізація комплексного компонента з підшаблонами 2–4 дні