Мастер создания сайта: пользовательские шаги
Предыдущий пример мастера создания сайта является довольно простым. Давайте изменим стандартные заголовки шагов и добавим свои пользовательские шаги для кастомизации шаблонов.
1. Скопируйте папку мастера установки шаблона в новую директорию, например, в my_site_master_pro.
2. Измените название нового мастера в файле .description.php и добавьте ключ STEPS_SETTINGS для кастомизации стандартных заголовков:
<? if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die(); $arWizardDescription = Array( "NAME" => "Мастер создания сайта: пользовательские шаги", "STEPS_SETTINGS" => Array( "WELCOME" => Array( "TITLE" => "Добро пожаловать в мастер создания сайта", "SUBTITLE" => "Нажмите кнопку Далее для выбора шаблонов", "CONTENT" => "Данный мастер демонстрирует работу с пользовательскими шагами", ), "SELECT_TEMPLATE" => Array( "TITLE" => "Шаблоны вашего сайта", ), ), ); ?>
3. Кроме выбора шаблона сайта пользователю будет предоставлена возможность адаптировать дизайн: например, изменить название и заголовок. В шаблонах мастера слоган и название сайта находятся в файле include_areas/company_name.php (относительно папки шаблона):
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?> <h1>Моя компания</h1> <span>Слоган компании</span>
Замените названия в этом в файле на соответствующие макросы:
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?> <h1>#COMPANY_NAME#</h1> <span>#COMPANY_SLOGAN#</span>
4. Создайте файл customize.php в папке мастера со следующим содержимым:
<? if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die(); class CustomizeSiteData extends CWizardStep { function InitStep() { $this->SetTitle("Данные сайта"); $this->SetSubTitle("Настройка данных сайта"); $wizard =& $this->GetWizard(); $wizard->SetDefaultVars( Array( "company_name" => "Моя компания", "company_slogan" => "Быстро. Просто. Эффективно", ) ); } function ShowStep() { $wizard =& $this->GetWizard(); $this->content .= "Укажите название вашего сайта, слоган, адрес сайта и загрузите свой логотип. Название, слоган и логотип будут размещены вверху на всех страницах сайта.
"; $this->content .= '<table class="wizard-data-table"><tr>'; $this->content .= "<td>Название сайта (компании):</td>"; $this->content .= "<td>".$this->ShowInputField("text", "company_name", Array("size" => "35"))."</td>"; $this->content .= "</tr>"; $this->content .= "<tr><td>Слоган компании:</td>"; $this->content .= "<td>".$this->ShowInputField("text", "company_slogan", Array("size" => "35"))."</td>"; $this->content .= "</tr>"; $this->content .= "</table>"; } } class InstallTemplateData extends CWizardStep { function InitStep() { $this->SetTitle("Установка данных шаблона..."); $this->SetAutoSubmit(); } function OnPostForm() { $wizard =& $this->GetWizard(); $package =& $wizard->GetPackage(); $templateID = $package->GetSiteTemplateID(); //ID выбранного шаблона $templatePath = "/bitrix/templates/".$templateID; $arReplace = Array( "COMPANY_NAME" => $wizard->GetVar("company_name"), "COMPANY_SLOGAN" => $wizard->GetVar("company_slogan"), ); CWizardUtil::ReplaceMacros($_SERVER["DOCUMENT_ROOT"].$templatePath."/include_areas/company_name.php", $arReplace); } function ShowStep() { $this->content .= "Установка данных шаблона..."; } } ?>
Этот файл определяет 2 пользовательских шага: шаг выбора и шаг установки. Первый предлагает пользователю ввести название и слоган сайта, второй - заменяет макросы в файле include_areas/company_name.php на нужные значения.
5. Наконец, в файле .templates.php необходимо описать пользовательские шаги:
<? if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die(); $arWizardTemplates = Array( "TEMPLATES" => Array( "web20" => Array( "SELECT_STEPS" => Array( "SCRIPT" => "customize.php", "STEPS" => Array( "customize_data" => "CustomizeSiteData", ) ), "INSTALL_STEPS" => Array( "SCRIPT" => "customize.php", "STEPS" => Array( "install_template_data" => "InstallTemplateData", ) ), ), "xml_catalog" => Array( "SELECT_STEPS" => Array( "SCRIPT" => "customize.php", "STEPS" => Array( "customize_data" => "CustomizeSiteData", ) ), "INSTALL_STEPS" => Array( "SCRIPT" => "customize.php", "STEPS" => Array( "install_template_data" => "InstallTemplateData", ) ), ), "books" => Array( "SELECT_STEPS" => Array( "SCRIPT" => "customize.php", "STEPS" => Array( "customize_data" => "CustomizeSiteData", ) ), "INSTALL_STEPS" => Array( "SCRIPT" => "customize.php", "STEPS" => Array( "install_template_data" => "InstallTemplateData", ) ), ), ) ); ?>
Пользовательские шаги у каждого шаблона могут быть разные, но в данном случае они у всех шаблонов совпадают.