Перейти к содержимому

Мастер настройки сайта в 1С-Битрикс - тиражные решения

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

Как это работает

Сценарий для клиента прост. Он покупает решение, ставит его модуль как обычное решение маркетплейса, а затем запускает мастер - тот создаёт сайт и наполняет его демо-контентом.

Файлы мастера лежат в отдельном каталоге, сгруппированные по партнёру и решению. Пространство имён такое же, как у компонентов: партнёр и название через двоеточие.

Из чего состоит мастер. В корне обязателен файл описания с массивом параметров, а при описании шагов кодом - файл самого мастера. Рядом лежат языковые файлы, изображения, публичная часть решения, шаблоны сайта, описания сервисов и XML демонстрационных инфоблоков.

Наследование от стандартного мастера - норма. Стандартное решение уже реализует типовые шаги: выбор шаблона, выбор темы, настройку сайта, импорт данных. Свой мастер наследуют от него, указав это в файле описания, и переопределяют только нужные шаги.

Примеры

1. Запуск мастера

/bitrix/admin/wizard_install.php?wizardName=partner:solution&wizardSiteID=s1

Адрес состоит из имени мастера в формате «партнёр и решение» и идентификатора сайта, к которому мастер применяется.

2. Наследование стандартного мастера

.description.php
$arWizardDescription = [
'NAME' => 'Моё решение',
'DESCRIPTION' => 'Корпоративный сайт с каталогом',
'VERSION' => '1.0.0',
'PARENT' => 'wizard_sol',
];
wizard.php
require_once $_SERVER['DOCUMENT_ROOT'] . '/bitrix/wizards/bitrix/wizard_sol/wizard.php';
// дальше переопределяются только нужные шаги

Смысл наследования в том, что типовые шаги - выбор шаблона и темы, ввод контактов, импорт демо-данных - уже написаны и протестированы. Своими остаются только те, что специфичны для решения.

3. Что обычно делает мастер

  • Создаёт сайт или настраивает существующий.
  • Устанавливает шаблон и цветовую тему.
  • Импортирует демонстрационные инфоблоки из XML.
  • Заполняет настройки модулей значениями решения.
  • Создаёт структуру публичной части из подготовленных файлов.

Справочник

ЭлементНазначениеОсобенности
Каталог мастерафайлы решениягруппировка по партнёру и решению
.description.phpописание мастераобязателен, содержит массив параметров
wizard.phpшаги, заданные кодомнужен при переопределении шагов
Ключ наследованияродительский мастеробычно стандартное решение платформы
Публичная часть решенияфайлы будущего сайтакопируются при установке
XML демо-инфоблоковдемонстрационные данныеимпортируются мастером
Шаблоны сайтаоформление решениявыбираются на шаге мастера
Скрипт запускаточка входа мастерапринимает имя мастера и идентификатор сайта

Частые ошибки

Мастер пишут с нуля. Стандартное решение уже содержит типовые шаги - наследование экономит недели и снижает число ошибок.

Тексты захардкожены в коде шагов. Всё, что видит пользователь, должно лежать в языковых файлах: иначе решение нельзя перевести, а кодировка может «поплыть» при установке.

Демо-данные привязаны к конкретным идентификаторам. На чужой установке идентификаторы будут другими - опирайтесь на символьные коды.

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

Пропущены файлы, начинающиеся с точки. При сборке архива под Windows они получают атрибут скрытых и не попадают в поставку - установка падает.

Частые вопросы

Обязательно ли делать мастер для тиражного решения?

Формально нет, но без него клиент получает модуль и пустой сайт: ему придётся вручную создавать структуру, настраивать модули и наполнять каталог. Мастер превращает это в несколько шагов диалога и заметно влияет на впечатление от решения. Для решений маркетплейса это фактически стандарт.

Что даёт наследование от стандартного мастера?

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

Как передать демо-данные в решение?

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

Почему решение не устанавливается на стороне клиента?

Самые частые причины - проблемы сборки архива: потерянные файлы, имена которых начинаются с точки, служебные файлы операционной системы, отсутствующий файл версии или незаполненные данные партнёра в установщике модуля. Проверять стоит на чистой установке, а не на своей разработческой площадке, где часть условий уже выполнена.

Связанные темы

Первоисточники