231  /  380
Справочник

Папка /local

Просмотров: 72944
Дата последнего изменения: 14.02.2023
Роберт Басыров
Сложность урока:
3 уровень - средняя сложность. Необходимо внимание и немного подумать.
1
2
3
4
5

  Папка для своих доработок

Чтобы сделать жизнь разработчиков проектов удобнее, в ядре D7 с версии главного модуля 14.0.1 основные файлы пользовательских проектов вынесены из папки /bitrix в папку /local. Это позволяет изолировать изменяющиеся файлы вашего проекта от папки продукта. По сути, в исключения достаточно будет добавить одну папку /bitrix.

Какие папки обрабатываются в /local?
  • activities - действия БП;
  • components - компоненты;
  • gadgets - гаджеты рабочего стола;
  • modules - модули;
  • php_interface - init.php, папка user_lang;
  • templates - шаблоны сайтов, шаблоны компонентов, шаблоны страниц;
  • blocks - блоки Сайтов24.
  • routes - файлs с конфигурацией маршрутов роутинга

При обработке папок приоритет всегда у папки /local перед /bitrix. Это означает, что если в /local/templates/ и /bitrix/templates/ будут находиться шаблоны сайта с одинаковым названием, то подключится шаблон из /local.

Примечание: не рекомендуется копировать сущности с одинаковыми именами в обе папки. Более правильное решение - это перенос сущности из одной папки в другую. При копировании система все равно будет корректно работать, но велика вероятность путаницы в работе разработчиков.

Внимание! В целях безопасности проекта необходимо задать права доступа к папке /local/php_interface/ аналогичные правам доступа к папке /bitrix/php_interface/.

  Перенос проекта

Как старый проект перенести в папку /local.

Вам достался старый и запущенный проект. Кто когда и как вносил правки - неизвестно, куда вносились правки - неизвестно. Вам нужно навести в нём порядок.

  1. Для начала следует воспользоваться Монитором качества Монитор качества - инструмент для проверки качества выполненного проекта перед сдачей его заказчику. Подробнее... в нём есть проверка на модификацию файлов ядра. Этот тест поможет определить какие файлы были изменены.
  2. Далее создаете папку /local, в ней не создаете файл /local/php_interface/ init init.php - необязательный файл в рамках структуры файлов Bitrix Framework. Он автоматически подключается в прологе.
    Подробнее...
    .php, а лишь /local/php_interface/constants.php, /local/php_interface/events.php, автолоадер для своих классов и так далее, и эти файлы подключаете в /bitrix/php_interface/init.php.
  3. В /local/templates/.default постепенно начинаете перенос ваши измененных шаблонов, при этом действовать нужно так: копируете в локал с другим названием, работаете с тестовой страницей (если тестового сервера нет). Потом заменяете название и из папки вашегo шаблона удаляете (или переименовываете) старый шаблон. Таким образом новый шаблон (чистый и готовый к использованию) постепенно будет собираться в local. Как только все шаблоны и компоненты перенесены в /local, init.php тоже можно будет перенести.
  4. С компонентами иначе - если это ваши родные компоненты, то их можно перенести и так (ничего от этого не изменится). Измененные штатные компоненты нужно копировать сначала из ядра, а потом уже сравнивать изменения и вносить правки.
  5. В шаблонах и компонентах нужно заменять прямые ссылки на /bitrix/templates/** , /bitrix/components/** и заменять на /local/**. Также внимательно проверяем и модули, если есть необходимость и их переносить.

Сколько времени уйдёт на этот процесс сказать невозможно. Всё зависит от степени "запущенности". Но опыт разработчиков, выполнявших эти действия, говорит о нескольких неделях работы.

Цитатник веб-разработчиков.

Иван Поддубный: Есть простой лайфхак, которым мы пользуемся: Переносим в локал все что нужно, и ставим симлинки с папок в битриксе в локал. Да, это конечно не полноценное решение проблемы, но это даст возможность разработчикам сразу начать работать с проектом с git с клиентом.

Ведь когда такая необходимость возникает? Когда клиент приходит в компанию с старым сайтом. А на входе клиенту начать заниматься рефакторингом путей в шаблонах - такое, особенно если шаблонов много, выкатывать клиенту N часов на исправление вместо того чтобы решить более важные проблемы.

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

Правда предупреждаем, что при переносе проекта на новый сервер (это случается не слишком часто) могут возникнуть проблемы.


34
Курсы разработаны в компании «1С-Битрикс»

Если вы нашли неточность в тексте, непонятное объяснение, пожалуйста, сообщите нам об этом в комментариях.
Развернуть комментарии