Стандартное исполнение настроек компонентов на сайте образует децентрализацию параметров, что в некоторых случаях может быть весьма неудобным, особенно когда проект обретает крупные масштабы.
Проблема заключается в том, что при попытке сменить какой-либо параметр, к примеру — ID инфоблока, в ряде случаев приходиться проходить по всем файлам, где он прописывается, что весьма неудобно, и отнимает значительное время при поиске местонахождения указанного параметра.
Одним из решений этой проблемы является объединение общих ключевых параметров в одном файле. Идея хранить параметры в отдельном конфигурационном файле не новая, поэтому было решено сделать функцию, которая бы возвращала массив с параметрами из этого файла.
Для удобства хорошо прописать функцию в таком месте, откуда она была бы в зоне досягаемости, без лишних манипуляций. Подходящим местом для функции является файл init.php, так как он подключается вместе с API битрикса.
Создадим файл с параметрами, прозовем его general_settings.php, и поместим в папку includes/. Файл general_settings.php содержит переменную $arParams, которая содержит массив с вашими параметрами. Структура массива делается под ваши потребности, с учетом возможного масштабирования.
$arParams = array( 'CATALOG' => array( 'IBLOCK_TYPE_ID' => 'catalog', 'IBLOCK_ID' => 5 ), );
Затем подключаем этот файл в функции, которая будет находиться в файле /bitrix/php_interface/init.php
// функция возвращает параметры конфигурации сайта function getSiteParams(){ $confFile = $_SERVER['DOCUMENT_ROOT']."/includes/general_settings.php"; if (file_exists($confFile)){ include ($confFile); return $arParams; } else return false; }
Таким образом, в коде мы можем использовать эту функцию для получения параметров.
Пример:
$arParams = getSiteParams();
В таком случае при смене параметров в конфигурационном файле general_settings.php изменения будет актуальны для всех частей сайта получающие параметры из данной функции.