- Модуль: main
- Путь к файлу: ~/bitrix/modules/main/classes/general/templates.php
- Класс: CTemplates
- Вызов: CTemplates::GetList
static function GetList($arFilter = array(), $arCurrentValues = array(), $template_id = array())
{
if(!is_set($arFilter, "FOLDER"))
{
$arr = CTemplates::GetFolderList();
$arFilter["FOLDER"] = array_keys($arr);
}
$arTemplates = array();
foreach($arFilter["FOLDER"] as $folder)
{
$folder = _normalizePath($folder);
$arTemplates[$folder] = array();
$arPath = array(
"/bitrix/modules/".$folder."/install/templates/",
BX_PERSONAL_ROOT."/templates/.default/",
);
if(is_array($template_id))
{
foreach($template_id as $v)
$arPath[] = BX_PERSONAL_ROOT."/templates/"._normalizePath($v)."/";
}
elseif($template_id <> '')
{
$arPath[] = BX_PERSONAL_ROOT."/templates/"._normalizePath($template_id)."/";
}
foreach($arPath as $path)
CTemplates::__FindTemplates($path, $arTemplates[$folder], $arCurrentValues, $folder);
if(empty($arTemplates[$folder]))
{
unset($arTemplates[$folder]);
}
else
{
$arTemplate = $arTemplates[$folder];
$arTemplateTemp = array();
$arSeparators = array();
foreach($arTemplate as $k=>$val)
if($val["SEPARATOR"]=="Y")
$arSeparators[$k] = $val;
foreach($arSeparators as $sep_id=>$val_sep)
{
$arTemplateTemp[$sep_id] = $val_sep;
reset($arTemplate);
while(list($k, $val) = current($arTemplate))
{
next($arTemplate);
if($val===false)
continue;
if($k==$sep_id)
{
while(list($k, $val) = current($arTemplate))
{
next($arTemplate);
if($val === false)
continue;
if($val["SEPARATOR"]=="Y")
break;
if($val["PARENT"] <> '' && $val["PARENT"]!=$sep_id)
continue;
$arTemplateTemp[$k] = $val;
$arTemplate[$k] = false;
}
//continue;
}
if($val["PARENT"]==$sep_id)
{
$arTemplateTemp[$k] = $val;
$arTemplate[$k] = false;
}
}
}
$bW = true;
foreach($arTemplate as $k=>$val)
{
if($val===false || $val["SEPARATOR"] == "Y")
continue;
if($bW)
{
if(!empty($arSeparators))
$arTemplateTemp[md5(uniqid(rand(), true))] = array("NAME"=> "----------------------------", "SEPARATOR"=>"Y");
$bW = false;
}
$arTemplateTemp[$k] = $val;
$arTemplate[$k] = false;
}
$arTemplates[$folder] = $arTemplateTemp;
}
}
return $arTemplates;
}