Где размещать свой код

Урок 2 из 10

25 мин

Легко

Немного теории

Файлы ядра платформы “1C-Битрикс: Управление сайтом” располагаются в папке /bitrix. Все остальное составляет публичную часть сайта. В публичной части сайта файл - это страница сайта, а папка - его раздел.

Код ядра модифицировать нельзя!

Как уже упоминалось в предыдущих уроках, в код ядра платформы категорически запрещено вносить свои изменения. Это затрудняет обновление системы, следовательно, делает ее более уязвимой и менее производительной.

Внутри папки /bitrix также присутствует определенное разделение. Из того, что наиболее часто нам пригодится в дальнейших уроках, здесь можно выделить:

Путь: /bitrix/... Что находится
components/ Стандартные компоненты, а также компоненты модулей, устанавливаемых через Marketplace
modules/ Файлы стандартных модулей и модулей из Marketplace/th>
templates/ Стандартные шаблоны сайтов
php_interface/ Каталог со служебными файлами

В перечисленных выше подкаталогах папки /bitrix/ допустимо размещать и собственные модули, шаблоны, компоненты и служебные скрипты (не трогая стандартные!).

Однако начиная с версии главного модуля 14.0.1, для любых пользовательских доработок в системе предусмотрена отдельная папка /local/. Благодаря ей можно организовать четкое разделение кастомного и стандартного кодов. Это особенно удобно, учитывая, что код ядра обычно не включается в отслеживание через Git, и для этого в .gitignore добавляется правило по игнорированию папки /bitrix/.

/local/

Папка /local/ имеет ту же структуру, что и /bitrix/, но при этом ее подпапки обладают большим приоритетом, чем одноименные в /bitrix/.

Где предпочтительнее размещать собственные компоненты, шаблоны и модули - в папке /local/. С этим разобрались, а что насчет остальной кастомной бизнес-логики (собственные функции, классы, обработчики событий, методы агентов и т.п.)?

В некоторых проектах можно встретить ситуацию, когда кастомный код располагают в файле init.php, находящийся в папке /local/php_interface/ или /bitrix/php_interface/. Если сайтов несколько, то init.php также может быть свой под каждый сайт. Тогда такие файлы будут находиться в подпапках папки php_interface, названных как “ID сайта”.

Особенность init.php в том, что он автоматически подключается в прологе, а потому исполняется на всех страницах сайта (где подключается ядро платформы).

Отсюда появляется соблазн использовать этот файл для регистрации обработчиков событий, подключения вспомогательных скриптов и классов, объявления общедоступных функций и констант, а также размещения логики, требующей выполнения на каждой странице. Это выглядит простым и быстрым вариантом решения той или иной задачи.

НО! Подобный вариант размещения собственных доработок рано или поздно приводит к разрастанию init.php, беспорядку в коде проекта, трудностям его масштабирования и передаче новым разработчикам. Поэтому такой подход крайне не рекомендуется, а по использованию init.php предусмотрен ряд правил, рекомендуемых к соблюдению.

init.php

Не рекомендуется размещать весь кастомный код в одном init.php!

Хорошим тоном считается выделение всего кастомного кода в собственный модуль.

В вопросе о размещении кастомного кода в проекте на “1C-Битрикс: Управление сайтом” хорошим тоном считается выделение всего кастомного кода в собственный модуль (или несколько модулей, если это необходимо по смыслу).

Собственные классы при таком подходе размещаются в папке модуля /lib и автоматически загружаются при подключении самого модуля (при условии, что имена классов и пространств имен удовлетворяют правилам ядра D7). Подключение файлов с произвольными функциями, константами, внешними библиотеками можно добавить в файл модуля include.php, который вызывается при подключении модуля.

Практика

В этом видеоуроке вы создадите на сайте модуль для размещения в нем собственных доработок, а также потренируетесь приводить в порядок файл init.php, если к моменту передачи проекта вам, в нем уже накопилась некоторая кастомная логика.

Где размещать свой код

21 мин