Демо-данные и мастер настройки — это то, что превращает набор файлов в готовое к работе тиражное решение. Разберём технологию Мастер решения (wizard), структуру каталогов и корректную установку и удаление демо-контента.
Зачем нужны демо-данные и мастер
Тиражное решение из Маркетплейс должно устанавливаться на чистый дистрибутив и сразу показывать рабочий сайт, а не пустые страницы. За это отвечают два механизма: демо-данные (инфоблоки, разделы, товары, настройки, файлы шаблона) и мастер решения — пошаговый интерфейс, который проводит администратора через первичную настройку.
Мастер решает несколько задач сразу:
- копирует публичную часть (шаблон сайта, страницы, компоненты) в структуру сайта;
- создаёт служебные и контентные инфоблоки;
- по желанию администратора наполняет их демонстрационным контентом;
- задаёт стартовые настройки — регион, валюту, контактные данные, цветовую схему.
Технология мастеров (wizard)
Мастер в Битрикс — это набор шагов, каждый из которых наследует класс CWizardStep. Мастер запускается из административной части после установки модуля решения и хранится в каталоге партнёрских мастеров.
Ключевые понятия:
- Мастер — файл
wizard.php, который регистрирует шаги и порядок их прохождения; - Шаг — класс-наследник
CWizardStepс методамиInitStep(),ShowStep()иOnPostForm(); - Wizard-переменные — данные, которые собираются на шагах и доступны через объект
$wizard; - Служебные скрипты в каталоге
site/, которые непосредственно разворачивают шаблон и контент.
Метод InitStep() задаёт заголовок и кнопки навигации, ShowStep() формирует HTML полей, OnPostForm() валидирует введённые значения и сохраняет их в мастере.
Структура каталога install/wizards
Файлы мастера размещаются внутри модуля решения по пути /install/wizards/partner_code/module_name/, где partner_code — ваш код партнёра, а module_name — символьный код решения (например, partner.shop).
Типовая структура:
| Путь | Назначение |
|---|---|
wizard.php | Точка входа: подключение шагов и порядок мастера |
.description.php | Название, версия, описание мастера |
steps/ | Классы шагов (наследники CWizardStep) |
site/ | Файлы публичной части, шаблоны, скрипты установки |
lang/ | Языковые файлы интерфейса мастера |
Тема оформления (шаблон сайта) и его настройки описываются внутри site/: там лежат .content/ со страницами, файлы шаблона и скрипты, которые копируют их в целевой сайт.
Пример шага мастера
Ниже — минимальный шаг с полем выбора: ставить демо-контент или нет. Значение сохраняется в wizard-переменной и потом читается при установке.
class InstallDemoStep extends CWizardStep { function InitStep() { $this->SetStepID('install_demo'); $this->SetTitle('Настройка каталога'); $this->SetNextStep('finish'); } function ShowStep() { $this->content .= $this->ShowCheckboxField('install_demo', 'Установить демо-данные', array('value'=>'Y')); } function OnPostForm() { /* значение доступно как $_REQUEST['install_demo'] */ } }
В wizard.php шаги регистрируются через объект мастера:
$wizard->AddSteps(array(new SelectTemplateStep(), new InstallDemoStep(), new FinishStep()));
CWizardStep (SetStepID, SetTitle, SetNextStep, ShowCheckboxField, GetWizardVar) — их набор описан в документации разработчика.Наполнение инфоблоков через API
Сам демо-контент устанавливают install-скрипты в site/. Инфоблоки создаются методами CIBlock, а элементы (товары, разделы) — через CIBlockElement и CIBlockSection.
- Создать тип инфоблока и сам инфоблок:
$obIBlock = new CIBlock(); $iblockId = $obIBlock->Add($arFields); - Добавить разделы каталога:
$obSection = new CIBlockSection(); $obSection->Add($arSection); - Добавить демо-товары с картинками и свойствами:
$obElement = new CIBlockElement(); $obElement->Add($arElement); - Сохранить полученные ID в настройках модуля через
COption::SetOptionString(), чтобы деинсталляция знала, что удалять.
Значение флага демо читается в скрипте установки: если администратор снял галочку, наполнение пропускается, но структура инфоблоков всё равно создаётся.
Привязка шаблона и корректное удаление
Мастер привязывает шаблон сайта к нужному сайту (обычно s1) через настройки шаблона и правила показа. Файлы публичной части копируются из site/ в корень сайта.
Отдельное внимание — деинсталляции. При удалении решения нужно предсказуемо убрать за собой контент:
- удалить созданные инфоблоки и их элементы по сохранённым ID;
- снять привязки шаблона и удалить скопированные файлы шаблона;
- очистить опции модуля через
COption::RemoveOption().
Тестирование мастера
Мастер обязан отрабатывать на чистом окружении так же стабильно, как на вашем dev-стенде. Проверяйте оба сценария — с демо-данными и без них.
- Установка на чистый дистрибутив нужной редакции (например, «Малый бизнес» или «Бизнес») без предустановленного контента.
- Прогон всех шагов вперёд и назад — переменные не должны теряться при возврате.
- Проверка, что после мастера публичная часть открывается без ошибок и предупреждений PHP.
- Полная деинсталляция и повторная установка — в системе не должно оставаться «хвостов».
- Тест на разных версиях ядра, заявленных в требованиях совместимости.
Отдельно убедитесь, что демо-товары, изображения и настройки соответствуют скриншотам в карточке решения — иначе аудит вернёт решение на доработку.
Итог
Грамотный мастер настройки и аккуратные демо-данные — половина успеха тиражного решения. Технически это набор шагов на CWizardStep в /install/wizards/partner_code/module_name/, install-скрипты на CIBlock/CIBlockElement и предсказуемая деинсталляция, не затрагивающая чужие данные.
Если нужно спроектировать архитектуру мастера, реализовать надёжный импорт демо-контента или довести решение до прохождения аудита, мы в B2Bsite помогаем на всех этапах — от структуры инфоблоков до автоматизации установки. Обращайтесь, если хотите сделать это один раз и правильно.
Частые вопросы
Обязательно ли включать демо-данные в тиражное решение?
Формально нет, но на практике демо-данные сильно повышают шансы на успешную модерацию и помогают покупателю быстро оценить решение. Главное — делать их опциональными, чтобы на боевом проекте их можно было не устанавливать.
Чем шаг мастера отличается от install-скрипта модуля?
Шаг мастера отвечает за интерфейс и сбор параметров у администратора, а install-скрипты выполняют фактическую работу: создают инфоблоки, копируют шаблон, наполняют каталог. Мастер оркеструет процесс, скрипты его исполняют.
Где физически лежат файлы мастера?
Внутри модуля решения по пути /install/wizards/partner_code/module_name/. Там находятся wizard.php, каталог steps со шагами, каталог site с файлами публичной части и языковые файлы.
Как правильно удалять демо-контент при деинсталляции?
Удаляйте только те объекты, которые создали сами, ориентируясь на сохранённые в опциях модуля идентификаторы инфоблоков и элементов. Не удаляйте инфоблоки по символьному коду вслепую, чтобы не стереть данные, наполненные администратором вручную.
Какие методы использовать для создания демо-товаров?
Инфоблоки создаются через CIBlock, разделы каталога через CIBlockSection, а сами элементы и товары через CIBlockElement. Полученные идентификаторы сохраняйте через COption для последующей корректной деинсталляции.
На каком дистрибутиве тестировать мастер?
На чистой редакции, соответствующей заявленным требованиям решения, без предустановленного контента. Нужно проверить установку с демо-данными и без них, а также полную деинсталляцию и повторную установку.
Можно ли в мастере дать выбор шаблона оформления?
Да, это распространённый шаг: администратор выбирает тему или цветовую схему, а install-скрипт применяет соответствующие настройки шаблона. Выбор сохраняется в wizard-переменной и читается на шаге установки.
Поможем с настройкой и поддержкой Для разработчиков
Поможем с настройкой, доработкой и поддержкой Для разработчиков.