public function getComponents($location)
 {
     $components = array();
     $componentsFolder = $this->getSiteRoot() . "/{$location}/components";
     if (file_exists($componentsFolder)) {
         $namespaces = FileSystemHelpers::getSubdirs($componentsFolder);
         foreach ($namespaces as $namespace) {
             $componentNames = FileSystemHelpers::getSubdirs("{$componentsFolder}/{$namespace}");
             foreach ($componentNames as $componentName) {
                 $components[] = "{$namespace}:{$componentName}";
             }
         }
     }
     return $components;
 }
 public function getSiteTemplates($location = "bitrix", $returnFullPath = false, $showLocation = false)
 {
     $templates = array();
     $siteRoot = BitrixTool::getInstance()->getSiteRoot();
     $prefix = $location != 'bitrix' ? $location : '';
     $siteTemplates = BitrixTool::getInstance()->getSiteTemplates($location);
     foreach ($siteTemplates as $siteTemplate) {
         $templatePath = implode("/", array("{$siteRoot}/{$location}/templates/{$siteTemplate}/components", $this->getNamespace(), $this->getName()));
         if (file_exists($templatePath)) {
             $tpls = FileSystemHelpers::getSubdirs($templatePath);
             foreach ($tpls as $tpl) {
                 if ($returnFullPath) {
                     $templates[] = "{$templatePath}/{$tpl}";
                 } else {
                     $templates[] = $showLocation ? "{$tpl} ({$prefix}/{$siteTemplate})" : $tpl;
                 }
             }
         }
     }
     return $templates;
 }