• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/classes/general/page_template.php
  • Класс: CPageTemplate
  • Вызов: CPageTemplate::GetList
static function GetList($arSiteTemplates=array())
{
	global $APPLICATION;

	$arDirs = array("templates/.default/page_templates");
	foreach($arSiteTemplates as $val)
		$arDirs[] = "templates/".$val."/page_templates";

	$arFiles = array();
	foreach($arDirs as $dir)
	{
		$path = getLocalPath($dir, BX_PERSONAL_ROOT);
		if($path === false)
			continue;
		$template_dir = $_SERVER["DOCUMENT_ROOT"].$path;
		if($handle = opendir($template_dir))
		{
			while(($file = readdir($handle)) !== false)
			{
				if($file == "." || $file == ".." || !is_dir($template_dir."/".$file))
					continue;

				$template_file = $template_dir."/".$file."/template.php";
				if(!file_exists($template_file))
					continue;

				if($APPLICATION->GetFileAccessPermission($path."/".$file."/template.php") < "R")
					continue;

				$arFiles[$file] = $template_file;
			}
			closedir($handle);
		}
	}

	$res = array();
	foreach($arFiles as $file=>$template_file)
	{
		/** @var CPageTemplate $pageTemplate */
		$pageTemplate = false;
		include_once($template_file);

		if(!$pageTemplate || !is_callable(array($pageTemplate, 'GetDescription')))
			continue;

		$arRes = array(
			"name"=>$file,
			"description"=>"",
			"icon"=>"",
			"file"=>$file,
			"sort"=>150,
			"type"=>"",
		);

		$arDesc = $pageTemplate->GetDescription();

		if(is_array($arDesc["modules"]))
			foreach($arDesc["modules"] as $module)
				if(!IsModuleInstalled($module))
					continue 2;

		if(is_array($arDesc))
		{
			foreach($arDesc as $key=>$val)
				$arRes[$key] = $val;
		}

		$res[$file] = $arRes;
	}

	uasort($res, array('CPageTemplate', '_templ_sort'));
	return $res;
}