Маркетплейсу 1С-Битрикс уже более 3 лет, а полноценных учебных материалов с примерами разработки на мой взгляд нет до сих пор. Эта проблема не решилась даже с выходом официального учебного курса 1С-Битрикс с видео-уроками. Возможно, опытным разработчикам достаточно документации API, однако я уже не первый год, задумываясь о том, как сделать своё решение, не знал даже с чего начать.
Специально для решения этой проблемы я выпустил собственное простейшее решение с минимальным функционалом (в версии 0.2) – «ПростойАдаптивный Лендинг».
В репозитории на GitHub я опубликовал 5 коммитов, соответствующие 5 стадиям превращения просто сайта в полноценный модуль для Маркета (и его последующее обновление):
- Стадия 1 – Сайт
- Стадия 2 – Мастер создания сайта
- Стадия 3 – Модуль (содержащий мастер)
- Стадия 4 – архив для отправки в Маркетплейс 1С-Битрикс
- Стадия 5 - Архив с ОБНОВЛЕНИЕМ для Маркетплейса 1С-Битрикс
Итак, давайте вкратце разберём что содержит каждая из стадий и какие превращения с ней происходят:
Стадия 1 – Сайт
Структура:
- Файлы публички – / (от корня сайта)
- Файлы шаблона сайта – /bitrix/templates/ИД_ШАБЛОНА/
Особенности:
- Файлы включаемых областей храним в структуре сайта (чтобы можно было легко добавить новые страницы-лендинги в разных разделах сайта и наследовать необходимые «слайды» включаемых областей)
- Вызов включаемых областей находится на странице index.php(мне это кажется неудобным, поскольку вносит риск повреждения кода вызова компонентов контент-редакторами, но не добавляет никакой пользы. Однако это было обязательным требованием прохождения модерации решения и вызовы были перенесены из шаблона на страницу в версии 0.2.1)
Стадия 2 – Мастер создания сайта
Структура:
- Сам модуль - /bitrix/wizards/ПРОСТРАНСТВО_ИМЁН/ИМЯ_МАСТЕРА/..
- .description.php* - ../.description.php
- Мастер wizard.php** - ../wizard.php
- Языковые файлы мастера (визарда и дескрипшена!) - ../lang/ИД_языка/
- Картинки (используются в мастере установки для ОФОРМЛЕНИЯ процесса установки) - ../images/
- ЧТО СТАВИМ - ../site/
- Файлы публички*** - ../public/ИД_ЯЗЫКА/
- Файлы шаблона**** - ../templates/ИД_ШАБЛОНА/
- «Сервисы» - ../services/
- Список сервисов****** - ../.services.php
- «Типы»/«Группы» сервисов, например MAIN******* - ../main/
Особенности:
- * - содержит версию мастера (не критично) и массив шагов мастера (важно добавить новые шаги в массив!)
- ** - Содержит сами шаги мастера, а так же «значения по-умолчанию». Важно в этом файле:
- Передать значения «по-умолчанию» из первичного массива в соответствующий шаг и там обработать, даже если не планируется их изменять пользовательски
- В соответствующих шагах заполняем поля, создаём сайты, копируем файлы из папок файлов (раздела «ЧТО СТАВИМ»). Никаких конкретных действий.
- Недопустимо использование кириллицы!!! Все кириллические символы вставляем языковыми фразами!
- *** - Содержит копию файлов публички (допустима кириллица). На местах, где предполагается замена контента введёнными в поля мастера пользователем значения, находятся МАКРОСЫ.
- **** - Содержит копию файлов Шаблона. Важно:
- НЕ допустима кириллица. Либо использовать языковые файлы, либо макорсы.
- На местах, где предполагается замена контента введёнными в поля мастера пользователем значения, находятся МАКРОСЫ.
- ****** - Массив сервисов, подключающихся последовательно. ПРИМЕР:
'НАЗВАНИЕ_ТИПА/ГРУППЫ' => Array( 'NAME' => GetMessage("SERVICE_MAIN_SETTINGS"), 'STAGES' => Array( "файл_сервиса_1.php", "файл_сервиса_2.php", "файл_сервиса_3.php", ), ), |
- ******* - В папках с названиями групп/типов лежат файлы сервисов. Сервисы осуществляют КОНКРЕТНЫЕ правки. Например, заменяют макросы в файлах публички/шаблоне на значения из мастера установки (в примере) или импортируют инфоблоки (нет в примере).
Принцип запаковки сайта:
- Заливаем файлы публички в /bitrix/wizards/ПРОСТРАНСТВО_ИМЁН/ИМЯ_МАСТЕРА/site/public/ИД_ЯЗЫКА/
- Заливаем шаблон в /bitrix/wizards/ПРОСТРАНСТВО_ИМЁН/ИМЯ_МАСТЕРА/site/templates/ИД_шаблона/
- Заменяем нужные куски макросами
- Пишем визард и дескрипшн по шагам с переменными, которые важны для публички/шаблона
- Пишем сервисы, работающие с макросами
- Оформляем (пишем языковые фразы и т.п.)
Стадия 3 – Модуль
Структура:
- * - /bitrix/modules/КОД_ПАРТНЁРА.КОД_МОДУЛЯ/..
- Обязательный инклуд** - ../include.php
- Языковые файлы модуля - ../lang/ИД_ЯЗЫКА/
- инсталлятор модуля - ../install/
- Версия модуля*** - ../version.php
- Инсталлятор**** - ../index.php
- Мастер установки***** - ../wizards/
- Компоненты****** - ../components/
Особенности:
- * - код партнёра маленькими буквами. Код модуля тоже маленькими латинскими буквами без подчёркиваний (в отличие от шаблона/мастера)
- ** - Если вы не реализуете защиту демо-версии, то он может быть и пустым.
- *** - Критичное значение для маркета!
- **** - Содержит код модуля с партнёром.
- ***** - Копия содержимого соответствующей папки предыдущей стадии. При установке решения копируется в папку /bitrix/wizards/, переводя вас к Стадии 2.
- ****** - В примере не представлено. Просто копируется в соответсвующую папку при установке модуля.
Принцип запаковки
- Делаем мастер.
- Оформляем всякую мишуру по заготовке.
Стадия 4 – Архив для Маркета
Принцип запаковки:
- Берём содержимое папки /bitrix/modules/КОД_ПАРТНЁРА.КОД_МОДУЛЯ/ и складываем в папку /.last_version/
- Архивируем папку /.last_version/ в архив .last_version.zip
Стадия 5 - Обновление для Маркета
Структура:
Идентична архиву для маркета за несколькими исключениями*
- ** - /НОМЕР_ВЕРСИИ/..
- Текстовое описание обновления*** - ../description.ru
- Установщик обновления**** - updater.php
Особенности:
- * - К обновлению прикладываются только ИЗМЕНИВШИЕСЯ файлы
- ** - Вместо /.last_version/ в имени папки используется номер версии модуля (должен совпадать с номером версии модуля в /НОМЕР_ВЕРСИИ/install/version.php)
- *** - Текстовый файл, используется для оформления информации об обновлении в Маркетплейсе 1С-Битрикс
- **** - В простейшем случае может быть использован образец из репозитория, никаких специфичных действий в него пока не заложено.
Принцип запаковки:
- Берём архив с последним стабильным модулем (полным), все изменения будут в мастере установки сайта.
- Удаляем немодифицированные файлы
- Оформляем "сопроводительные файлы" (апдейтер, версию модуля, описание)
- Архивируем папку со всем содержимым в НОМЕР_ВЕРСИИ.zip