Как кастомизировать сайты на решениях Аспро и не потерять доработки при обновлениях
Готовые решения Аспро для 1С‑Битрикс — это быстрый старт: в коробке уже есть каталог, корзина, фильтры, адаптив и многое другое. Но при этом у заказчика почти всегда есть свои требования к дизайну и функционалу. Главная проблема при кастомизации — обновления шаблона могут перезаписать ваши правки, и сайт «откатится» к исходному виду. В этой статье разберём, как делать доработки так, чтобы они сохранялись после обновлений, и какие методы использовать для разных уровней изменений.
Почему доработки исчезают при обновлениях
Шаблоны Аспро распространяются как готовые модули/темы. При обновлении модуля/шаблона система заменяет файлы в папке шаблона (обычно /local/templates/ или /bitrix/templates/) на новые версии. Если вы правили файлы напрямую — эти изменения пропадут. Поэтому важно разделять:
- файлы вендора (Аспро) — их нельзя менять напрямую;
- ваши кастомные файлы — они должны лежать отдельно и иметь приоритет.
Правило №1: никогда не правим ядро и файлы шаблона Аспро напрямую
Любые правки в файлах, которые пришли с шаблоном Аспро (в папках components, css, js, template.php компонентов и т.п.) — это риск. При обновлении эти файлы будут перезаписаны. Вместо этого используйте механизмы расширения и переопределения, которые даёт Битрикс и сам подход Аспро.
/bitrix/templates/aspro_max/components/bitrix/catalog.section/template.php. При следующем обновлении шаблона все изменения исчезнут.
Кастомные стили: как менять дизайн без потери правок
Самый простой и безопасный способ — вынести свои стили в отдельный файл и подключить его после основных стилей Аспро. Тогда ваши правила будут иметь приоритет (или можно использовать более специфичные селекторы).
Рекомендуемый путь:
- Создайте файл
custom.cssв папке вашего шаблона:/local/templates/ваш_шаблон/css/custom.css. - Подключите его в
header.phpшаблона после основных CSS Аспро. - Пишите стили с учётом специфики селекторов, чтобы не конфликтовать с базовыми.
<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/ваш_шаблон/.
Как это сделать:
- Скопируйте папку стандартного шаблона компонента в папку вашего шаблона.
- Правьте
template.phpи связанные файлы (стили, скрипты) уже в этой папке. - Битрикс будет использовать ваш шаблон вместо стандартного.
Пример структуры:
/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 + регулярные бэкапы базы и файлов.
Что делать, если доработки уже сделаны «в лоб» и правки пропадают при обновлении
Если вы уже правили файлы Аспро напрямую и при обновлении они перезаписываются, есть два пути:
- Перенести изменения в безопасные места: стили — в
custom.css, HTML — в переопределённый шаблон, логику — в события/компоненты. - Создать свой шаблон-наследник: скопировать весь шаблон Аспро в новую папку и работать уже с ней. Это даст полный контроль, но потребует больше усилий при поддержке.
Заключение
Кастомизация решений Аспро — это баланс между скоростью внедрения и безопасностью правок. Используйте штатные механизмы Битрикса: переопределение шаблонов компонентов, отдельные CSS-файлы, события и собственные компоненты. Такой подход позволит вам гибко менять сайт под нужды бизнеса и не бояться обновлений шаблона. Всегда держите свои доработки отдельно от файлов вендора — это залог стабильной и предсказуемой работы сайта в долгосрочной перспективе.