Свой модуль в 1С-Битрикс - структура, установка, обновления
Свой модуль - способ упаковать код проекта так, чтобы он ставился, обновлялся и удалялся целиком. Здесь собраны решения по этой задаче.
Что общего у этих задач
Модуль - это каталог с известной структурой. Платформа ждёт файл подключения, класс установки и каталог классов, а всё остальное - на усмотрение автора. Отсюда первое следствие: модуль без класса установки не появится в списке.
Код проекта живёт в каталоге local. Там же лежат свои модули, и это единственное место, которое переживает обновление платформы без правок. Файлы рядом со штатными модулями возвращаются к исходному виду при первом обновлении.
Настройки модуля хранятся отдельно от кода. Их пишут в настройки платформы по идентификатору модуля, а не в файлы, иначе выкладка новой версии затирает значения, выставленные на боевом сайте.
Модуль обещает поддержку на годы. Он ставится, обновляется и снимается, и каждый из этих сценариев придётся однажды пройти на живом проекте.
Решения подтемы
- Свой модуль: структура, установка, автозагрузка - каталог модуля, класс установки, классы и настройки.
- Свой модуль или код в проекте: когда пора выносить в модуль - критерии выбора, цена упаковки, установка обработчиков.
- Языковые файлы: сообщения, подстановки, второй язык - раскладка файлов, подстановки значений и второй язык.
- Публикация своего модуля: требования, обновления, поддержка - требования к коду, установка и обновления.
- Свой модуль не устанавливается: разбор причин - описание модуля, имя класса, скрытые файлы, кодировка.
- Мастер тиражного решения: шаги, макросы, публичная часть - каталог мастера, наследование, шаги, макросы установки.
- Модуль установился, но не работает: разбор причин - подключение и автозагрузка, копирование файлов, пункт меню, обработчики событий.
Частые вопросы
Зачем оформлять код модулем, если можно положить в init.php?
Модуль ставится и удаляется целиком, знает свою версию и умеет обновляться. Файл с обработчиками растёт до тысяч строк и не переносится на другой проект.
Обязателен ли класс установки?
Да, без него модуль не появится в списке и не поставится. Он же отвечает за создание таблиц и регистрацию обработчиков.
Где держать классы модуля?
В каталоге классов с именами по правилу автозагрузки. Тогда подключать файлы вручную не нужно.
Что будет с данными при удалении модуля?
Удаляется то, что удаляет его класс удаления. Хорошая практика - спрашивать, сносить ли таблицы, а не сносить их молча.
Связанные темы
- Модули и решения - устройство модулей платформы
- Обработчик события: регистрация, аргументы, отмена действия - что регистрирует модуль при установке
- Свой тип пользовательского поля - типовой пример кода в модуле
- Свой агент и задание по расписанию - фоновые задачи модуля
- Раздел Модули