function __SearchTemplate($customTemplatePath = "") { $this->__file = ""; $this->__fileAlt = ""; $this->__folder = ""; $this->__hasCSS = null; $this->__hasJS = null; $arFolders = array(); $relativePath = $this->__component->GetRelativePath(); $parentRelativePath = ""; $parentTemplateName = ""; $parentComponent =& $this->__component->GetParent(); $defSiteTemplate = $this->__siteTemplate == ".default"; if ($parentComponent && $parentComponent->GetTemplate()) { $parentRelativePath = $parentComponent->GetRelativePath(); $parentTemplateName = $parentComponent->GetTemplate()->GetName(); if (!$defSiteTemplate) { $arFolders[] = array("path" => "/local/templates/" . $this->__siteTemplate . "/components" . $parentRelativePath . "/" . $parentTemplateName . $relativePath, "in_theme" => true); } $arFolders[] = array("path" => "/local/templates/.default/components" . $parentRelativePath . "/" . $parentTemplateName . $relativePath, "in_theme" => true, "site_template" => ".default"); $arFolders[] = array("path" => "/local/components" . $parentRelativePath . "/templates/" . $parentTemplateName . $relativePath, "in_theme" => true, "site_template" => ""); } if (!$defSiteTemplate) { $arFolders[] = array("path" => "/local/templates/" . $this->__siteTemplate . "/components" . $relativePath); } $arFolders[] = array("path" => "/local/templates/.default/components" . $relativePath, "site_template" => ".default"); $arFolders[] = array("path" => "/local/components" . $relativePath . "/templates", "site_template" => ""); if ($parentComponent) { if (!$defSiteTemplate) { $arFolders[] = array("path" => BX_PERSONAL_ROOT . "/templates/" . $this->__siteTemplate . "/components" . $parentRelativePath . "/" . $parentTemplateName . $relativePath, "in_theme" => true); } $arFolders[] = array("path" => BX_PERSONAL_ROOT . "/templates/.default/components" . $parentRelativePath . "/" . $parentTemplateName . $relativePath, "in_theme" => true, "site_template" => ".default"); $arFolders[] = array("path" => "/bitrix/components" . $parentRelativePath . "/templates/" . $parentTemplateName . $relativePath, "in_theme" => true, "site_template" => ""); } if (!$defSiteTemplate) { $arFolders[] = array("path" => BX_PERSONAL_ROOT . "/templates/" . $this->__siteTemplate . "/components" . $relativePath); } $arFolders[] = array("path" => BX_PERSONAL_ROOT . "/templates/.default/components" . $relativePath, "site_template" => ".default"); $arFolders[] = array("path" => "/bitrix/components" . $relativePath . "/templates", "site_template" => ""); if (strlen($customTemplatePath) > 0 && ($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 (strlen($this->__file) > 0) { 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 strlen($this->__file) > 0; } 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"] . "/" . 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 != ""; }
function __SearchTemplate($customTemplatePath = "") { $this->__file = ""; $this->__fileAlt = ""; $this->__folder = ""; $this->__hasCSS = null; $this->__hasJS = null; $arFolders = array(); $relativePath = $this->__component->GetRelativePath(); $parentComponent =& $this->__component->GetParent(); if ($parentComponent) { $parentRelativePath = $parentComponent->GetRelativePath(); $parentTemplateName = $parentComponent->GetTemplate()->GetName(); $arFolders[] = BX_PERSONAL_ROOT . "/templates/" . $this->__siteTemplate . "/components" . $parentRelativePath . "/" . $parentTemplateName . $relativePath; $arFolders[] = BX_PERSONAL_ROOT . "/templates/.default/components" . $parentRelativePath . "/" . $parentTemplateName . $relativePath; $arFolders[] = "/bitrix/components" . $parentRelativePath . "/templates/" . $parentTemplateName . $relativePath; } else { $parentRelativePath = ""; $parentTemplateName = ""; } $arFolders[] = BX_PERSONAL_ROOT . "/templates/" . $this->__siteTemplate . "/components" . $relativePath; $arFolders[] = BX_PERSONAL_ROOT . "/templates/.default/components" . $relativePath; $arFolders[] = "/bitrix/components" . $relativePath . "/templates"; if (strlen($customTemplatePath) > 0 && ($templatePageFile = $this->__SearchTemplateFile($customTemplatePath, $this->__page))) { $this->__fileAlt = $customTemplatePath . "/" . $templatePageFile; for ($i = 0, $cnt = count($arFolders); $i < $cnt; $i++) { if (file_exists($_SERVER["DOCUMENT_ROOT"] . $arFolders[$i] . "/" . $this->__name) && is_dir($_SERVER["DOCUMENT_ROOT"] . $arFolders[$i] . "/" . $this->__name)) { $this->__file = $arFolders[$i] . "/" . $this->__name . "/" . $templatePageFile; $this->__folder = $arFolders[$i] . "/" . $this->__name; } if (StrLen($this->__file) > 0) { if ($i == 0 || $i == 3) { } elseif ($i == 1 || $i == 4) { $this->__siteTemplate = ".default"; } else { $this->__siteTemplate = ""; } if ($parentComponent && $i < 3) { $this->__templateInTheme = true; } else { $this->__templateInTheme = false; } break; } } return strlen($this->__file) > 0; } static $cache; $cache_id = $relativePath . "|" . $this->__siteTemplate . "|" . $parentRelativePath . "|" . $parentTemplateName . "|" . $this->__page . "|" . $this->__name; if (!isset($cache)) { $cache = array(); } if (!isset($cache[$cache_id])) { $i = 0; foreach ($arFolders as $folder) { $fname = $folder . "/" . $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 . "/" . SubStr($this->__name, 0, bxstrrpos($this->__name, "/")); } } } else { if ($templatePageFile = $this->__SearchTemplateFile($folder, $this->__name)) { $this->__file = $folder . "/" . $templatePageFile; } } if ($this->__file != "") { if ($i == 0 || $i == 3) { } elseif ($i == 1 || $i == 4) { $this->__siteTemplate = ".default"; } else { $this->__siteTemplate = ""; } if ($parentComponent && $i < 3) { $this->__templateInTheme = true; } else { $this->__templateInTheme = false; } break; } $i++; } $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 != ""; }