• Модуль: 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 != "");
}