- Модуль: main
- Путь к файлу: ~/bitrix/modules/main/classes/general/component_template.php
- Класс: CBitrixComponentTemplate
- Вызов: CBitrixComponentTemplate::__SearchTemplate
public function __SearchTemplate($customTemplatePath = "")
{
$this->__file = "";
$this->__fileAlt = "";
$this->__folder = "";
$this->__hasCSS = null;
$this->__hasJS = null;
$relativePath = $this->__component->GetRelativePath();
$parentRelativePath = "";
$parentTemplateName = "";
$parentComponent = $this->__component->GetParent();
if($parentComponent && $parentComponent->GetTemplate())
{
$parentRelativePath = $parentComponent->GetRelativePath();
$parentTemplateName = $parentComponent->GetTemplate()->GetName();
}
$arFolders = $this->generatePossibleTemplatePath();
if($customTemplatePath <> '' && $templatePageFile = $this->__SearchTemplateFile($customTemplatePath, $this->__page))
{
$this->__fileAlt = $customTemplatePath."/".$templatePageFile;
foreach ($arFolders as $folder)
{
if (is_dir($_SERVER["DOCUMENT_ROOT"].$folder["path"]."/".$this->__name))
{
$this->__file = $folder["path"]."/".$this->__name."/".$templatePageFile;
$this->__folder = $folder["path"]."/".$this->__name;
}
if ($this->__file <> '')
{
if(isset($folder["site_template"]))
$this->__siteTemplate = $folder["site_template"];
if(isset($folder["in_theme"]) && $folder["in_theme"] === true)
$this->__templateInTheme = true;
else
$this->__templateInTheme = false;
break;
}
}
return ($this->__file <> '');
}
static $cache = array();
$cache_id = $relativePath."|".$this->__siteTemplate."|".$parentRelativePath."|".$parentTemplateName."|".$this->__page."|".$this->__name;
if(!isset($cache[$cache_id]))
{
foreach ($arFolders as $folder)
{
$fname = $folder["path"]."/".$this->__name;
if (file_exists($_SERVER["DOCUMENT_ROOT"].$fname))
{
if (is_dir($_SERVER["DOCUMENT_ROOT"].$fname))
{
if ($templatePageFile = $this->__SearchTemplateFile($fname, $this->__page))
{
$this->__file = $fname."/".$templatePageFile;
$this->__folder = $fname;
$this->__hasCSS = file_exists($_SERVER["DOCUMENT_ROOT"].$fname."/style.css");
$this->__hasJS = file_exists($_SERVER["DOCUMENT_ROOT"].$fname."/script.js");
}
}
elseif (is_file($_SERVER["DOCUMENT_ROOT"].$fname))
{
$this->__file = $fname;
if (strpos($this->__name, "/") !== false)
$this->__folder = $folder["path"]."/".mb_substr($this->__name, 0, bxstrrpos($this->__name, "/"));
}
}
else
{
if ($templatePageFile = $this->__SearchTemplateFile($folder["path"], $this->__name))
$this->__file = $folder["path"]."/".$templatePageFile;
}
if ($this->__file != "")
{
if(isset($folder["site_template"]))
$this->__siteTemplate = $folder["site_template"];
if(isset($folder["in_theme"]) && $folder["in_theme"] === true)
$this->__templateInTheme = true;
else
$this->__templateInTheme = false;
break;
}
}
$cache[$cache_id] = array(
$this->__folder,
$this->__file,
$this->__siteTemplate,
$this->__templateInTheme,
$this->__hasCSS,
$this->__hasJS,
);
}
else
{
$this->__folder = $cache[$cache_id][0];
$this->__file = $cache[$cache_id][1];
$this->__siteTemplate = $cache[$cache_id][2];
$this->__templateInTheme = $cache[$cache_id][3];
$this->__hasCSS = $cache[$cache_id][4];
$this->__hasJS = $cache[$cache_id][5];
}
return ($this->__file != "");
}