Перейти к содержимому

Кастомизация чужого компонента - шаблон вместо правки ядра

Штатный компонент почти всегда доводится до нужного вида без своего кода. Здесь собраны способы сделать это так, чтобы правки пережили обновление.

Что общего у этих задач

Файлы платформы правке не подлежат. Обновление перезапишет их без предупреждения, и вместе с ними исчезнет вся работа, а искать пропажу будут далеко от места правки.

Своё живёт в отдельном каталоге. Копия шаблона рядом с сайтом, а не внутри платформы, и есть тот механизм, который платформа предлагает вместо правки исходников.

Разметка меняется в шаблоне, данные - до шаблона. Это разделение и подсказывает, какой из файлов кастомизации нужен в конкретной задаче.

Копия шаблона не обновляется вместе с продуктом. Это цена свободы: новые возможности штатного шаблона в вашу копию сами не приезжают, и раз в год её стоит сверять с исходным.

С чего начать

Начинают с вопроса, что именно требуется поменять. Разметку и вёрстку правят в своей копии шаблона, состав данных - в файле обработки результата, а поведение на каждом запросе - в эпилоге компонента.

Дальше копируют шаблон в свой каталог и подключают его по имени. Копируют именно шаблон, а не весь компонент: копия компонента перестаёт получать исправления платформы целиком.

Последним проверяют, что правка пережила бы обновление. Простой тест - найти в своей правке хотя бы один файл внутри каталога платформы: если он есть, работу переносят в свой каталог.

Решения подтемы

Частые вопросы

Можно ли поправить файл штатного компонента?

Обновление вернёт его в исходный вид. Свои изменения держат в копии шаблона или в своём компоненте.

Чем шаблон отличается от своего компонента?

Шаблон меняет вывод, компонент - способ получения данных. Если запрос устраивает, своего компонента не нужно.

Где менять данные перед выводом?

В файле доработки результата рядом с шаблоном. Он выполняется после компонента и до разметки.

Что делать с данными вне кэша?

Получать их в эпилоге шаблона: он выполняется всегда, даже когда результат взят из кэша.

Связанные темы

Первоисточники