Вернуться в список

Как кастомизировать сайты на решениях Аспро и не потерять доработки при обновлениях

Как кастомизировать сайты на решениях Аспро и не потерять доработки при обновлениях

Готовые решения Аспро для 1С‑Битрикс — это быстрый старт: в коробке уже есть каталог, корзина, фильтры, адаптив и многое другое. Но при этом у заказчика почти всегда есть свои требования к дизайну и функционалу. Главная проблема при кастомизации — обновления шаблона могут перезаписать ваши правки, и сайт «откатится» к исходному виду. В этой статье разберём, как делать доработки так, чтобы они сохранялись после обновлений, и какие методы использовать для разных уровней изменений.

Почему доработки исчезают при обновлениях

Шаблоны Аспро распространяются как готовые модули/темы. При обновлении модуля/шаблона система заменяет файлы в папке шаблона (обычно /local/templates/ или /bitrix/templates/) на новые версии. Если вы правили файлы напрямую — эти изменения пропадут. Поэтому важно разделять:

  • файлы вендора (Аспро) — их нельзя менять напрямую;
  • ваши кастомные файлы — они должны лежать отдельно и иметь приоритет.

Правило №1: никогда не правим ядро и файлы шаблона Аспро напрямую

Любые правки в файлах, которые пришли с шаблоном Аспро (в папках components, css, js, template.php компонентов и т.п.) — это риск. При обновлении эти файлы будут перезаписаны. Вместо этого используйте механизмы расширения и переопределения, которые даёт Битрикс и сам подход Аспро.

Опасная практика: править /bitrix/templates/aspro_max/components/bitrix/catalog.section/template.php. При следующем обновлении шаблона все изменения исчезнут.

Кастомные стили: как менять дизайн без потери правок

Самый простой и безопасный способ — вынести свои стили в отдельный файл и подключить его после основных стилей Аспро. Тогда ваши правила будут иметь приоритет (или можно использовать более специфичные селекторы).

Рекомендуемый путь:

  1. Создайте файл custom.css в папке вашего шаблона: /local/templates/ваш_шаблон/css/custom.css.
  2. Подключите его в header.php шаблона после основных CSS Аспро.
  3. Пишите стили с учётом специфики селекторов, чтобы не конфликтовать с базовыми.
<link href="/local/templates/ваш_шаблон/css/custom.css" rel="stylesheet">

Пример переопределения стиля кнопки в каталоге Аспро:

/* custom.css */
.catalog-item .btn-buy {
    background-color: #0056b3;
    color: #ffffff;
    border: none;
    padding: 10px 20px;
}
.catalog-item .btn-buy:hover {
    background-color: #004494;
}

Такой подход гарантирует, что при обновлении Аспро ваши стили останутся нетронутыми, так как файл custom.css не является частью поставки шаблона.

Кастомные шаблоны компонентов: переопределение без потери

Если нужно изменить HTML-структуру компонента (например, карточки товара, списка разделов, корзины), используйте механизм переопределения шаблонов компонентов Битрикса.

Стандартный путь компонента: /bitrix/components/bitrix/catalog.element/. Путь переопределённого шаблона: /local/templates/ваш_шаблон/components/bitrix/catalog.element/ваш_шаблон/.

Как это сделать:

  1. Скопируйте папку стандартного шаблона компонента в папку вашего шаблона.
  2. Правьте template.php и связанные файлы (стили, скрипты) уже в этой папке.
  3. Битрикс будет использовать ваш шаблон вместо стандартного.

Пример структуры:

/local/templates/ваш_шаблон/
├── components/
│   └── bitrix/
│       ├── catalog.element/
│       │   └── ваш_кастомный_шаблон/
│       │       ├── template.php
│       │       ├── style.css
│       │       └── script.js
│       └── catalog.section/
│           └── ваш_кастомный_шаблон/
│               ├── template.php
│               └── ...

При обновлении Аспро файлы в /bitrix/ изменятся, но ваши переопределённые шаблоны в /local/ останутся без изменений. Это штатный и рекомендуемый механизм Битрикса.

Глубокие изменения кода: когда нужно менять логику, а не только HTML

Иногда недостаточно поменять верстку — нужна другая логика вывода, дополнительные поля, интеграция со сторонними сервисами. Здесь есть несколько безопасных подходов:

1. Кастомные компоненты и простые вызовы

Для сложной логики лучше создать свой компонент (в папке /local/components/) и вызывать его в нужных местах. Это полностью изолирует вашу логику от обновлений Аспро.

2. События и обработчики

Битрикс предоставляет события, на которые можно повесить свою логику. Например, для каталога это события модуля catalog, для инфоблоков — OnBeforeIBlockElementAdd, OnAfterIBlockElementUpdate и т.д. Подключите обработчики в init.php, и они будут работать независимо от шаблона.

// /local/php_interface/init.php
AddEventHandler("iblock", "OnBeforeIBlockElementAdd", ["MyHandlers", "onBeforeElementAdd"]);

class MyHandlers {
    public static function onBeforeElementAdd(&$arFields) {
        // ваша логика
    }
}

3. Кастомные классы и расширения

Если решение Аспро использует собственные классы (например, для работы с корзиной, оформлением заказа), можно создать свои классы-наследники и использовать их через DI или переопределение фабрик. Главное — не менять файлы Аспро напрямую, а расширять их.

Примеры и подходы на основе практики Аспро и других разработчиков

На сайте aspro.ru в документации и демо-проектах часто встречаются следующие паттерны:

  • использование отдельных CSS-файлов для точечных правок дизайна;
  • переопределение шаблонов компонентов для изменения структуры карточек и списков;
  • вынос кастомной логики в отдельные файлы и подключение через init.php;
  • настройка параметров через административные настройки шаблона (меньше кода — меньше рисков).

У других разработчиков шаблонов для Битрикса (не только Аспро) распространён подход «минимальные правки в шаблоне + максимум логики в собственных компонентах и событиях». Это снижает риск конфликтов при обновлениях и упрощает поддержку проекта.

Практические советы и чек-лист

Чек-лист безопасной кастомизации:
  • [ ] Не правьте файлы Аспро в /bitrix/templates/ и /bitrix/components/.
  • [ ] Все стили — в отдельном custom.css, подключённом после основных.
  • [ ] Шаблоны компонентов — только через переопределение в /local/templates/.
  • [ ] Логика — в собственных компонентах, событиях и классах.
  • [ ] Делайте бэкапы и фиксируйте изменения в системе контроля версий (Git).

Частые ошибки и как их избежать

  • Правка файлов Аспро «чтобы быстрее сделать». Решение: всегда используйте переопределения и отдельные файлы.
  • Смешивание стилей в одном файле с базовыми стилями Аспро. Решение: держите custom.css отдельно.
  • Написание сложной логики прямо в template.php. Решение: выносите логику в события или отдельные классы.
  • Отсутствие бэкапов и контроля версий. Решение: Git + регулярные бэкапы базы и файлов.

Что делать, если доработки уже сделаны «в лоб» и правки пропадают при обновлении

Если вы уже правили файлы Аспро напрямую и при обновлении они перезаписываются, есть два пути:

  1. Перенести изменения в безопасные места: стили — в custom.css, HTML — в переопределённый шаблон, логику — в события/компоненты.
  2. Создать свой шаблон-наследник: скопировать весь шаблон Аспро в новую папку и работать уже с ней. Это даст полный контроль, но потребует больше усилий при поддержке.

Заключение

Кастомизация решений Аспро — это баланс между скоростью внедрения и безопасностью правок. Используйте штатные механизмы Битрикса: переопределение шаблонов компонентов, отдельные CSS-файлы, события и собственные компоненты. Такой подход позволит вам гибко менять сайт под нужды бизнеса и не бояться обновлений шаблона. Всегда держите свои доработки отдельно от файлов вендора — это залог стабильной и предсказуемой работы сайта в долгосрочной перспективе.