Документация для разработчиков
Темная тема

Мастер создания сайта: пользовательские шаги

Предыдущий пример мастера создания сайта является довольно простым. Давайте изменим стандартные заголовки шагов и добавим свои пользовательские шаги для кастомизации шаблонов.

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",
				)
			),
		),
	)
);
?>

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



© «Битрикс», 2001-2024, «1С-Битрикс», 2024