Хочу сделать решение готового сайта для маркетплейса. Была мысль сделать с нуля по документации, но как-то не очень разобрался в ней. Вот думаю взять за основу какое-то решение и переделать под своё (ну и разобраться по ходу). Возник такой вопрос - где взять образец? Решения, которые устанавливаются из марктплейса загружаются в папку модулей. А решения, устанавливаемые вместе с БУС находятся в /bitrix/wizards/ (demo, например) Так как быть? Что взять за основу?
Как я вас понимаю! Действительно с точки зрения маркета готовый сайт - это всё равно... МОДУЛЬ!.. У меня от этого в своё время мозги основательно перекосило.
Увы, методичку "для дебилов" (а я люблю именно такие) вряд ли кто-то напишет. Недавно был вебинар, если память не изменяет на эту тему. Возможно ещё будет в ближайшее будущее (или запись выложат партнёрам).
К сожалению, толковой документации по этому вопросу нигде нет. С маркета ВСЕ попадает в /bitrix/modules/. Затем выполняется вункция DoInstalll в папка_модуля/install/index.php. Помимо всего прочего, эта функция копирует так же содержимое папки папка_модуля/wizards/ в bitrix/wizards/, а так же по назначению все остальные папки, типа templates и т.п.
Единственный вариант разобраться - залезть в исходники какого-нибудь готового решения К сожалению, почти вся работа сложнее нарезки шаблонов начинается с изучения исходников ядра.
Правильно ли я понимаю, что методологически нет разницы между готовым решением и модулем в битриксе? То есть скажем у меня есть свой модуль, что бы сделать из него решение мне достаточно в DoInstall добавить пару функций копирования в частности шаблона сайта решения и прописать этот шаблон как основной на сайте + скопировать все каталоги и файлы нового сайта в корень сайта и все готово?
Или же решение обязательно должно содержать визард по которому пользователь должен шагать?
Дмитрий Дмитрук написал: Правильно ли я понимаю, что методологически нет разницы между готовым решением и модулем в битриксе? То есть скажем у меня есть свой модуль, что бы сделать из него решение мне достаточно в DoInstall добавить пару функций копирования в частности шаблона сайта решения и прописать этот шаблон как основной на сайте + скопировать все каталоги и файлы нового сайта в корень сайта и все готово?
Или же решение обязательно должно содержать визард по которому пользователь должен шагать?
Дмитрий Дмитрук написал: Правильно ли я понимаю, что методологически нет разницы между готовым решением и модулем в битриксе? То есть скажем у меня есть свой модуль, что бы сделать из него решение мне достаточно в DoInstall добавить пару функций копирования в частности шаблона сайта решения и прописать этот шаблон как основной на сайте + скопировать все каталоги и файлы нового сайта в корень сайта и все готово?
Или же решение обязательно должно содержать визард по которому пользователь должен шагать?
Я это читал, но там много не понятных моментов. Например как сделать так что бы в мастере не было выбора тем так как в моем шаблоне нет тем? И вообще в моем решении по сути не нужно инсталить сервисы (инфоблоки) а нужно всего два действия - скопировать шаблон (и зарегестрировать его) и скопировать публичные файлы. Да и еще вопрос, сейчас пробую разбираю решения из маркетплейса а они почему то устанавливают дополнительный сайт вместо того что бы заливать файлы в корень? Где это прописывается что бы установка шла в текущий сайт?
Дмитрий Дмитрук написал: Я это читал, но там много не понятных моментов. Например как сделать так что бы в мастере не было выбора тем так как в моем шаблоне нет тем?
wizard.php задаёт каждый шаг (выбор темы, например) в виде классов. Тот пример что я вам дал не содержит шага выбора темы.
Цитата
Дмитрий Дмитрук написал: И вообще в моем решении по сути не нужно инсталить сервисы (инфоблоки) а нужно всего два действия - скопировать шаблон (и зарегестрировать его) и скопировать публичные файлы.
в папке services мастера есть набор сервисов установки. Там перечислены файлы, которые занимаются установкой файлов и инфоблоков. Просто оставьте подключение только тех файлов инсталляции, которые вам нужны (например, копирования файлов и настройки сайта, без инфоблоков)
Цитата
Дмитрий Дмитрук написал: Да и еще вопрос, сейчас пробую разбираю решения из маркетплейса а они почему то устанавливают дополнительный сайт вместо того что бы заливать файлы в корень? Где это прописывается что бы установка шла в текущий сайт?
смотрите 1й шаг мастера (wizard.php) и первый файл в папке services. Визард задёт выбор сайта для установки. Первый файл в сервисах как правило отвечает за копирование файлов в выбранный файл и создание сайта.
Алексей Задойный написал: смотрите 1й шаг мастера (wizard.php) и первый файл в папке services. Визард задёт выбор сайта для установки. Первый файл в сервисах как правило отвечает за копирование файлов в выбранный файл и создание сайта.
Вот я установил ваш мастер и у меня файлы скопировались в папку site_tx где именно и что прописывать что бы файлы копировались в корень сайта?
Может я что то не понимаю? Я нажимаю кнопку "протестировать решение" и любые решения у меня устанавливаются в отдельную папку такого типа site_cf Может я не ту кнопку нажимаю? Что значит "протестировать"? Может есть установка решения а не тестирование? И тогда оно будет устанавливать сайт на главную страницу (в корень) сайта?
Дмитрий Дмитрук написал: Может я что то не понимаю? Я нажимаю кнопку "протестировать решение" и любые решения у меня устанавливаются в отдельную папку такого типа site_cf Может я не ту кнопку нажимаю? Что значит "протестировать"? Может есть установка решения а не тестирование? И тогда оно будет устанавливать сайт на главную страницу (в корень) сайта?
Да, вы что-то не понимаете. Кнопка "протестировать решение" запускает мастер установки сайта с выбором установки "новый сайт" (т.е. пропускает шаг выбора в какой сайт произойдёт установка). Это вообще к мастеру не относится.
class SelectSiteStep extends CSelectSiteWizardStep
{
function InitStep()
{
parent::InitStep();
$wizard =& $this->GetWizard();
$wizard->solutionName = "Start_Bootstrap_Landing_Page";
$this->SetNextStep("site_settings");
}
}
Мы в этом шаге наследуемся от системного класса CSelectSiteWizardStep. Поэтому никаких настроек нет. Этот шаг выводит шаг "Выбор сайта":
При этом сам этот код ещё ничего не изменяет в системе! он просто принимает от пользователя данные и временно хранит их в памяти для дальнейших шагов мастера установки!
Если дальше в этом же мастере вы посмотрите на класс:
Код
class DataInstallStep extends CDataInstallWizardStep
{
}
То поймёте, что именно он запускает УСТАНОВКУ сайта. Причём он опять же наследуется от системного класса, я ничего не мудрю.
Что этот системный класс делает? Если кратко, то он идёт в /.last_version/install/wizards/coffeediz/Start_Bootstrap_Landing_Page/site/services/.services.php и смотрит список скриптов для установки. Выполняет он их прямо по очереди. Если какого-то файла из списка нет, то просто пропускает. Если какой-то файл содержит ошибки падает с ошибкой и предлагает пропустить шаг. Что интересного мы тут видим? Первый же файл - files.php Идём смотреть /.last_version/install/wizards/coffeediz/Start_Bootstrap_Landing_Page/site/services/main/files.php Видим использование интересной php функции CopyDirFiles. Думаю нет смысла объяснять что она делает? Касательно вопроса КУДА она это делает обратите внимание на константу WIZARD_SITE_PATH - она была установлена в зависимости от выбора пользователя на шаге 1 "Выбор сайта". Естественно, если вы выбрали из публичного интерфейса кнопку "тестировать решение", то битрикс ответил на вопрос выбора сайта за вас и у вас там какое-нибудь значение вроде /u00/www/site/site_cf/. Собственно этот файл описывает процесс копирования файлов публичной части.
Если вы отправитесь в дальнейшее путешествие по моему примеру, то увидите и как происходит копирование шаблона. Я специально дал ссылку на статью где происходит только создание сайта, копирование файлов публички и шаблона (без инфоблоков и прочего сложного функционала), чтобы новичок мог разобраться. Просто идите последовательно по моему мастеру - он очень прост.