Все знают, что есть прекрастный файл result_modifier.php, который можно разместить в папке шаблона и дополнить результат работы системного компонента, чтобы не модифицировать его. Так же недавно ввели полезный файлик component_epilog.php чтобы изменять динамичекие свойства на странице без кеширования.
Для полной картины - нехватает одного завершающего штриха - файлика params_modifier.php , который бы позволил програмно менять параметры компонента перед его запуском.
Типичный пример - используем компонент bitrix:catalog.top чтобы вывести несколько лучших товаров по определенному критерию. Было бы отилчно иметь возможность в файлике params_modifier.php произвести изменение входных параметров (например, заполнить переменную arrFilter), или определить раздел инфблока, из которого выводить элементы, на основе каких-то дополнительных критериев (например, текущей страницы), или проверить права доступа, и выбрать нужные свойства для того или иного пользователя. Сейчас для того, чтобы это проделать, нужно перед вызовом компонента размещать сторонний код, что разбивает компонент на части и повышает риск случайного изменения кода.
Было бы очень удобно иметь возможность определить или програмно изменить входные параметры компонента перед его запуском, чтобы сохранить системный компонент.
Хоть сам я и сторонник написать свой компонент, но это если делать для себя. Если же сайт потом будут редактировать другие люди, или если приходится доделывать после кого-то, согласитесь, очень приятно увидеть на сайте старые добрые bitrix:catalog или bitrix:catalog.section.list где ты легко можно найти что было изменено или добавлено, и быть более-менее уверенным что разработка велась правильно. Хоть и неоптимально, и медленно, и большой кеш, но зато оно работает, четко и правильно, кешируется, и всё такое.
Так вот, чтобы оттянуть по максимуму необходимость копировать штатный компонент в своё пространство имен - очень нужно добавить такую штучку как params_modifier.php (в шаблоне компонента), которая позволит динамически модифицировать входные параметры компонента и иметь тиражное решение для разработок из коробки.
Пока что самое быстрое решение - в файле /bitrix/modules/main/classes/general/component.php:367 просто подключать файл params_modifier.php из шаблона компонента, в котором можно было менять результат работы $arParams. Что-то типа:
final protected function __prepareComponentParams(&$arParams)
{
// тут подключить файл для дополнительной обработки $arPrams
// if ( file_exists(...../template_name/params_modifier.php) )
// include (...);
Можно ли это сделать штатными средствами Битрикса без модификации ядра? Как по мне - штука нужная и необходимая.
А да к слову на конференции кто-то коментнул, вот класс можно пол офиса уволить теперь. Сегодня сеошников уволят а завтра и хакеров, а потом и дизайнеров. И всё буд сводится к набору галочек. Сайт за полчаса
А автомобили как? сейчас конвеер есть, набор опций и доп. комплектаций к стандартной базе, все к этому идет, автомобили на заказ никто не делает. Тем не менее, автомобильная индустрция процветает, и куча инжинеров проектируют новые тиражные автомобили, рестайлинговые версии, ставят двигатели от одних производителей, подушки безопасностей от других, колеса от третьих и тд. В этом нет ничего страшного, даже наоборот, больше возможностей.
Группы на сайте создаются не только сотрудниками «1С-Битрикс», но и партнерами компании. Поэтому мнения участников групп могут не совпадать с позицией компании «1С-Битрикс».