Мастер создания сайта: пользовательские шаги
Предыдущий пример мастера создания сайта является довольно простым. Давайте изменим стандартные заголовки шагов и добавим свои пользовательские шаги для кастомизации шаблонов.
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",
)
),
),
)
);
?>
Пользовательские шаги у каждого шаблона могут быть разные, но в данном случае они у всех шаблонов совпадают.