Мастер настройки сайта в 1С-Битрикс - тиражные решения
Мастер - это многошаговый диалог, который превращает установленный модуль тиражного решения в работающий сайт: создаёт структуру, наполняет демо-данными и применяет настройки. Разберём, из чего он состоит и почему его почти никогда не пишут с нуля.
Как это работает
Сценарий для клиента прост. Он покупает решение, ставит его модуль как обычное решение маркетплейса, а затем запускает мастер - тот создаёт сайт и наполняет его демо-контентом.
Файлы мастера лежат в отдельном каталоге, сгруппированные по партнёру и решению. Пространство имён такое же, как у компонентов: партнёр и название через двоеточие.
Из чего состоит мастер. В корне обязателен файл описания с массивом параметров, а при описании шагов кодом - файл самого мастера. Рядом лежат языковые файлы, изображения, публичная часть решения, шаблоны сайта, описания сервисов и XML демонстрационных инфоблоков.
Наследование от стандартного мастера - норма. Стандартное решение уже реализует типовые шаги: выбор шаблона, выбор темы, настройку сайта, импорт данных. Свой мастер наследуют от него, указав это в файле описания, и переопределяют только нужные шаги.
Примеры
1. Запуск мастера
/bitrix/admin/wizard_install.php?wizardName=partner:solution&wizardSiteID=s1Адрес состоит из имени мастера в формате «партнёр и решение» и идентификатора сайта, к которому мастер применяется.
2. Наследование стандартного мастера
$arWizardDescription = [ 'NAME' => 'Моё решение', 'DESCRIPTION' => 'Корпоративный сайт с каталогом', 'VERSION' => '1.0.0', 'PARENT' => 'wizard_sol',];require_once $_SERVER['DOCUMENT_ROOT'] . '/bitrix/wizards/bitrix/wizard_sol/wizard.php';
// дальше переопределяются только нужные шагиСмысл наследования в том, что типовые шаги - выбор шаблона и темы, ввод контактов, импорт демо-данных - уже написаны и протестированы. Своими остаются только те, что специфичны для решения.
3. Что обычно делает мастер
- Создаёт сайт или настраивает существующий.
- Устанавливает шаблон и цветовую тему.
- Импортирует демонстрационные инфоблоки из XML.
- Заполняет настройки модулей значениями решения.
- Создаёт структуру публичной части из подготовленных файлов.
Справочник
| Элемент | Назначение | Особенности |
|---|---|---|
| Каталог мастера | файлы решения | группировка по партнёру и решению |
.description.php | описание мастера | обязателен, содержит массив параметров |
wizard.php | шаги, заданные кодом | нужен при переопределении шагов |
| Ключ наследования | родительский мастер | обычно стандартное решение платформы |
| Публичная часть решения | файлы будущего сайта | копируются при установке |
| XML демо-инфоблоков | демонстрационные данные | импортируются мастером |
| Шаблоны сайта | оформление решения | выбираются на шаге мастера |
| Скрипт запуска | точка входа мастера | принимает имя мастера и идентификатор сайта |
Частые ошибки
Мастер пишут с нуля. Стандартное решение уже содержит типовые шаги - наследование экономит недели и снижает число ошибок.
Тексты захардкожены в коде шагов. Всё, что видит пользователь, должно лежать в языковых файлах: иначе решение нельзя перевести, а кодировка может «поплыть» при установке.
Демо-данные привязаны к конкретным идентификаторам. На чужой установке идентификаторы будут другими - опирайтесь на символьные коды.
Мастер не проверяет предусловия. Стоит убедиться, что нужные модули установлены и лицензия позволяет создать ещё один сайт, до того как начать создавать структуру.
Пропущены файлы, начинающиеся с точки. При сборке архива под Windows они получают атрибут скрытых и не попадают в поставку - установка падает.
Частые вопросы
Обязательно ли делать мастер для тиражного решения?
Формально нет, но без него клиент получает модуль и пустой сайт: ему придётся вручную создавать структуру, настраивать модули и наполнять каталог. Мастер превращает это в несколько шагов диалога и заметно влияет на впечатление от решения. Для решений маркетплейса это фактически стандарт.
Что даёт наследование от стандартного мастера?
Готовые типовые шаги: выбор шаблона и цветовой темы, ввод настроек сайта, импорт демонстрационных данных. Вы указываете родителя в файле описания, подключаете его код и переопределяете только специфичные для вашего решения шаги. Писать всё с нуля - это заново реализовывать то, что уже протестировано вендором.
Как передать демо-данные в решение?
Через XML демонстрационных инфоблоков, которые мастер импортирует на соответствующем шаге, и подготовленную публичную часть, которая копируется на сайт. Важное правило: не привязывайте данные и код к конкретным числовым идентификаторам - на чужой установке они будут другими. Опирайтесь на символьные коды.
Почему решение не устанавливается на стороне клиента?
Самые частые причины - проблемы сборки архива: потерянные файлы, имена которых начинаются с точки, служебные файлы операционной системы, отсутствующий файл версии или незаполненные данные партнёра в установщике модуля. Проверять стоит на чистой установке, а не на своей разработческой площадке, где часть условий уже выполнена.
Связанные темы
- Свои модули - установщик и подготовка к маркетплейсу
- Шаблоны сайта - что ставит мастер
- Инфоблоки - демонстрационные данные
- Раздел Модули