- Модуль: main
- Путь к файлу: ~/bitrix/modules/main/classes/general/site_template.php
- Класс: CSiteTemplate
- Вызов: CSiteTemplate::GetList
static function GetList($arOrder=array(), $arFilter=array(), $arSelect=false)
{
/** @global CMain $APPLICATION */
global $APPLICATION;
if(isset($arFilter["ID"]) && !is_array($arFilter["ID"]))
$arFilter["ID"] = array($arFilter["ID"]);
if(isset($arFilter["TYPE"]) && !is_array($arFilter["TYPE"]))
$arFilter["TYPE"] = array($arFilter["TYPE"]);
$folders = array(
"/local/templates",
BX_PERSONAL_ROOT."/templates",
);
$arRes = array();
foreach($folders as $folder)
{
$path = $_SERVER["DOCUMENT_ROOT"].$folder;
if(is_dir($path))
{
$handle = opendir($path);
if($handle)
{
while(($file = readdir($handle)) !== false)
{
if($file == "." || $file == ".." || !is_dir($path."/".$file))
continue;
if($file == ".default")
continue;
if(isset($arRes[$file]))
continue;
if(isset($arFilter["ID"]) && !in_array($file, $arFilter["ID"]))
continue;
$arTemplate = array("DESCRIPTION" => "");
$fname = $path."/".$file."/description.php";
if(file_exists(($fname)))
{
BitrixMainLocalizationLoc::loadLanguageFile($fname);
include($fname);
}
if(!isset($arTemplate["TYPE"])) $arTemplate["TYPE"] = '';
if(isset($arFilter["TYPE"]) && !in_array($arTemplate["TYPE"], $arFilter["TYPE"]))
continue;
$arTemplate["ID"] = $file;
$arTemplate["PATH"] = $folder."/".$file;
if(!isset($arTemplate["NAME"]))
$arTemplate["NAME"] = $file;
if($arSelect === false || in_array("SCREENSHOT", $arSelect))
{
if(file_exists($path."/".$file."/lang/".LANGUAGE_ID."/screen.gif"))
$arTemplate["SCREENSHOT"] = $folder."/".$file."/lang/".LANGUAGE_ID."/screen.gif";
elseif(file_exists($path."/".$file."/screen.gif"))
$arTemplate["SCREENSHOT"] = $folder."/".$file."/screen.gif";
else
$arTemplate["SCREENSHOT"] = false;
if(file_exists($path."/".$file."/lang/".LANGUAGE_ID."/preview.gif"))
$arTemplate["PREVIEW"] = $folder."/".$file."/lang/".LANGUAGE_ID."/preview.gif";
elseif(file_exists($path."/".$file."/preview.gif"))
$arTemplate["PREVIEW"] = $folder."/".$file."/preview.gif";
else
$arTemplate["PREVIEW"] = false;
}
if($arSelect === false || in_array("CONTENT", $arSelect))
{
$arTemplate["CONTENT"] = $APPLICATION->GetFileContent($path."/".$file."/header.php")."#WORK_AREA#".$APPLICATION->GetFileContent($path."/".$file."/footer.php");
}
if($arSelect === false || in_array("STYLES", $arSelect))
{
if(file_exists($path."/".$file."/styles.css"))
{
$arTemplate["STYLES"] = $APPLICATION->GetFileContent($path."/".$file."/styles.css");
$arTemplate["STYLES_TITLE"] = CSiteTemplate::__GetByStylesTitle($path."/".$file."/.styles.php");
}
if(file_exists($path."/".$file."/template_styles.css"))
$arTemplate["TEMPLATE_STYLES"] = $APPLICATION->GetFileContent($path."/".$file."/template_styles.css");
}
$arRes[$file] = $arTemplate;
}
closedir($handle);
}
}
}
if(is_array($arOrder))
{
$columns = array();
static $fields = array("ID"=>1, "NAME"=>1, "DESCRIPTION"=>1, "SORT"=>1);
foreach($arOrder as $key => $val)
{
$key = mb_strtoupper($key);
if(isset($fields[$key]))
{
$columns[$key] = (mb_strtoupper($val) == "DESC"? SORT_DESC : SORT_ASC);
}
}
if(!empty($columns))
{
BitrixMainTypeCollection::sortByColumn($arRes, $columns);
}
}
$db_res = new CDBResult;
$db_res->InitFromArray($arRes);
return $db_res;
}