Довольно часто приходится менять кол-во столбцов в пагинации у компонетов news.list, catalog.section и пр., где используется компонет system.pagenavigation.
К сожалению сейчас, нет другого способа, кроме как кастомизировать компонент и вставлять строку: $rsElement->nPageWindow = $arParams['nPageWindow']; перед вызовом $rsElement->GetPageNavStringEx().
Например, для компонента news.list нужно сделать так, примерно на 366 строке:
Для чего? Легко и просто: чтобы в компонентах публичной части нельзя было выбрать свойства, указанные как служебные. Т.е. чтобы они не показывались на сайте, если клиент их, например, по незнанию выбрал. И просто чтобы мусора меньше.
Иначе получается, что многие модули или готовые решения создают свои свойства инфоблоков, которые явно не нужно выводить на сайте (напр., в шаблоне от Битрикс: "Тема форума для комментариев", "Количество комментариев к элементу", "Заголовок окна браузера и др" ).
Таких свойств бывает очень много, они создают мусор в настройках компонентов.
Раз уж переходим к ООП в компонентах, то давайте делать и следующие шаги в этом направлении. Похоронили component.php, покусимся и на .parameters.php, .desсription.php. Ведь фразы вроде “Есть возможность наследования компонент” не выдерживают критики. Да, когда нужно создать похожий компонент, мы копируем не три файла, а всего два (+ не забываем про шаблоны). Почему бы не сделать в CBitrixComponent два новых метода - getDescription и getParameters, которые бы заменили эти старые добрые процедурные файлы?
P.S. К слову о шаблонах - почему бы не давать компоненту пользоваться шаблонами родительского компонента?
Как известно, параметры полей в файле .parameters.phpшаблона задаются через массив $arTemplateParameters, в том время как в файле .parameters.phpкомпонента поля задаются через массив $arComponentParameters['PARAMETERS'].
Однако группы в файле .parameters.phpшаблона переопределить уже нельзя. Хочешь — не хочешь, а придется использовать те, что были заданы в .parameters.phpкомпонента.
Это создает неудобства при разработке. В результате дополнительные параметры, отвечающие за совершенно разные настройки (!!!), которыми разработчик снабжает шаблон, как правило вынужденно сваливаются в общую группу ADDITIONAL.
Особенно актуально для комплексных компонентов. Например, когда в настройки комплексного компонента forum на уровне шаблона включаются дополнительные настройки для использования своих или сторонних компонентов:
- использование закладок для сторонних соцсетей; - обратные ссылки на ссылающиеся элементы инфоблоков (при обсуждении какого-либо элемента в форуме); - отображение всех публикаций по заданному тегу (темы форумов, форумы, группы форумов, элементы и группы разных инфоблоков, сообщения блогов, блоги, соцсети и т. д.); и т. д.