В битриксе есть удобная штука - к обычным параметрам компонента можно прикрепить дополнительные параметры, определенные выбранным шаблоном. В документации данная возможность упоминается вскользь, хотя на самом деле этот функционал - кладезь разумности! [spoiler]
В документации данный функционал описан на странице "Структура шаблона обычного компонента" про шаблоны компонентов 2.0:
По сути мы можем для каждого шаблона одного и того же компонента задать собственные параметры. Например, есть у нас обычный компонент для вывода списка элементов. Мы можем вывести элементы в виде списка, в виде таблицы, в виде сетки. Для этого лишь надо создать три системных шаблона: .default, table, grid. Например. Шаблон .default будет простым списком без выкрутасов. Для шаблона table мы можем задать какие поля отображать в качестве колонок. Для grid мы можем определить сколько в сетке будет строк и столбцов.
Меня удивляет, почему этот функционал не применяется на практике (или применяется крайне редко, не знаю, не встречал вообще). Допустим, в битриксе есть системные компоненты: catalog.section и catalog.top. По сути одно и то же - выборка товаров. Почему нельзя сделать один компонент с тремя разными шаблонами? Неужели нужен специальный компонент catalog.top, чтобы организовать вывод в виде сетки?
И вообще, я считаю, что был бы удобен в повседневной работе универсальный компонент для вывода записей инфоблока. В зависимости от шаблона и его параметров мы можем оптимизировать выборку из БД, обработку данных. Ведь по сути сегодня типовые выборки везде делают одно и тоже. Новости, список товаров, список фоток, детальная страница чего угодно (фото, новости, товары, каталог) и т.д. Всё это может быть один единственный компонент с динамическими параметрами и несколькими разными шаблонами. Везде где, есть просто выборка элементов от 1 до бесконечности - можно использовать такой компонент. Конечно, если компонент требует дополнительной логики, допустим, выборку из нескольких инфоблоков, тут уже надо другое решение. Хотя и на этот счет у меня есть мысли
Теперь практика.
Файл .parameters.php в шаблоне имеет тот же синтаксис описания параметров компонента, что и обычный файл, за исключением одного момента. Параметры полей задаются через массив $arTemplateParameters, тогда как в компоненте поля задаются через массив $arComponentParameters['PARAMETERS']. Соответственно, нельзя переопределить группы параметров, придется использовать те, что были заданы в .parameters.php для компонента.
В документации данный функционал описан на странице "Структура шаблона обычного компонента" про шаблоны компонентов 2.0:
| Файл .parameters.php, который содержит описание входных параметров шаблона для редактора. Этот файл может отсутствовать. |
По сути мы можем для каждого шаблона одного и того же компонента задать собственные параметры. Например, есть у нас обычный компонент для вывода списка элементов. Мы можем вывести элементы в виде списка, в виде таблицы, в виде сетки. Для этого лишь надо создать три системных шаблона: .default, table, grid. Например. Шаблон .default будет простым списком без выкрутасов. Для шаблона table мы можем задать какие поля отображать в качестве колонок. Для grid мы можем определить сколько в сетке будет строк и столбцов.
Меня удивляет, почему этот функционал не применяется на практике (или применяется крайне редко, не знаю, не встречал вообще). Допустим, в битриксе есть системные компоненты: catalog.section и catalog.top. По сути одно и то же - выборка товаров. Почему нельзя сделать один компонент с тремя разными шаблонами? Неужели нужен специальный компонент catalog.top, чтобы организовать вывод в виде сетки?
И вообще, я считаю, что был бы удобен в повседневной работе универсальный компонент для вывода записей инфоблока. В зависимости от шаблона и его параметров мы можем оптимизировать выборку из БД, обработку данных. Ведь по сути сегодня типовые выборки везде делают одно и тоже. Новости, список товаров, список фоток, детальная страница чего угодно (фото, новости, товары, каталог) и т.д. Всё это может быть один единственный компонент с динамическими параметрами и несколькими разными шаблонами. Везде где, есть просто выборка элементов от 1 до бесконечности - можно использовать такой компонент. Конечно, если компонент требует дополнительной логики, допустим, выборку из нескольких инфоблоков, тут уже надо другое решение. Хотя и на этот счет у меня есть мысли

Теперь практика.
Файл .parameters.php в шаблоне имеет тот же синтаксис описания параметров компонента, что и обычный файл, за исключением одного момента. Параметры полей задаются через массив $arTemplateParameters, тогда как в компоненте поля задаются через массив $arComponentParameters['PARAMETERS']. Соответственно, нельзя переопределить группы параметров, придется использовать те, что были заданы в .parameters.php для компонента.