Дата последнего изменения: 22.01.2024
Как изменить стандартный вид компонента |
Иван, веб-разработчик:
1. Действительно хотеть это.В веб-программировании и программировании вообще есть популярный миф, что логику, данные и представления легко и очевидно можно отделить друг от друга, что решение этой задачи однозначно. Если немного подумать, становится очевидно что логика, данные и представления легко переходят между собой в зависимости от того, с какого уровня абстракции вы смотрите на задачу. Например, html-код шаблона для разработчика сайта это безусловно представление, для браузера это код, а для ядра CMS это данные.
Разработчики, впервые видящие код шаблона любого компонента, например списка новостей, ужасаются циклу, каше из php и HTML (и js изредка можно встретить). Это шаблон, он для вывода. Все данные уже собраны, запросы отработали, понятно что и куда мы выводим, даже отлов угроз уже прошел. Шаблон - последнее звено в цепочке кода и данных. Тут логика вывода действительно смешана с оформлением, и это правильно.
Начинающему разработчику часто очень непросто разобраться в том, где в шаблоне данные, где представление. В шаблоне можно писать любой php-код, можно написать прямое, не API, обращение к базе данных, можно написать десяток строк на API и решить задачу. Битрикс этим очень «развращает» разработчика: не запрещено писать бизнес-логику в шаблонах и HTML в компонентах, слишком много свободы. В собственном коде и по идеологии Bitrix Framework задача разделения данных решена нормально, а вот написание в шаблоне ерунды, не рекомендованной по идеологии, система не контролирует.
Приступая к кастомизации нужно помнить:
Кастомизация шаблона компонента, как правило, преследует две цели:
Пользовательские шаблоны компонента – шаблоны, которые изменены под нужды конкретного проекта. Они должны лежать в папках шаблонов портала (т.е. в
/local
При обработке папок приоритет всегда у папки /local перед /bitrix. Это означает, что если в /local/templates/ и /bitrix/templates/ будут находиться шаблоны сайта с одинаковым названием, то подключится шаблон из /local.
). При копировании шаблона компонента средствами системы, они будут расположены по следующему пути:
Подробнее...
/templates/шаблон_сайта//local/templates/шаблон_сайта/components/namespace/название_компонента/название_шаблона
.
/bitrix/templates/текущий_шаблон_сайта/components/
. Но в этом случае возникают нюансы, которые нужно учитывать. Предположим, что в этой папке оказались шаблоны двух компонентов с общей начальной частью в названии. Например: catalog (комплексный) и собственно catalog.section (простой). При этом в шаблоне комплексного есть еще простой catalog.section. В этом случае для catalog.section нужно использовать единый шаблон с именем, отличным от .default. Иначе он не будет подхвачен.Копировать шаблон можно следующими способами:
/bitrix/components/bitrix/_нужный_компонент_/templates/
в папку /local/templates/шаблон_сайта/components/namespace/название_компонента/_название_шаблона
.После копирования шаблон можно изменять и, после изменения, применить его к компоненту в настройках компонента.
При кастомизации можно использовать буферизацию.
В главе приведены некоторые примеры кастомизации шаблонов.
В главе приводятся примеры кастомизации шаблонов. Кроме этих материалов рекомендуем познакомится ещё с сообщениями в блогах разработчиков: