- Модуль: main
- Путь к файлу: ~/bitrix/modules/main/lib/page/asset.php
- Класс: BitrixMainPageAsset
- Вызов: Asset::getCss
public function getCss($type = AssetShowTargetType::ALL)
{
$res = '';
$cnt = 0;
$additional = [];
static $setList = [];
static $ajaxList = [];
if (empty($setList))
{
$this->setTemplateID();
$this->addTemplateCss();
$this->prepareCss();
$setList = $this->getTargetList();
$optimizeCss = $this->optimizeCss();
foreach ($setList as $setInfo)
{
if (!isset($this->css[$setInfo['NAME']]))
{
continue;
}
$data = '';
if (!empty($this->moduleInfo['CSS'][$setInfo['MODULE_NAME']]['DATA']))
{
$data = $this->moduleInfo['CSS'][$setInfo['MODULE_NAME']]['DATA'];
}
$location = '';
if (!empty($this->moduleInfo['CSS'][$setInfo['MODULE_NAME']]['LOCATION']))
{
$location = $this->moduleInfo['CSS'][$setInfo['MODULE_NAME']]['LOCATION'];
}
$resCss = '';
$listAsset = [];
$showLabel = ($setInfo['NAME'] == 'TEMPLATE');
foreach ($this->css[$setInfo['NAME']] as $cssFile)
{
$css = $cssFile['FULL_PATH'];
if ($this->ajax)
{
$this->assetList['CSS'][] = $cssFile['PATH'];
$ajaxList[] = $css;
}
elseif ($cssFile['EXTERNAL'])
{
$resCss .= $this->insertCss($css, $showLabel);
$this->fileList['CSS'][$setInfo['NAME']]['FILES'][] = $css;
$cnt++;
}
elseif ($optimizeCss)
{
if ($cssFile['SKIP'])
{
$resCss .= $this->insertCss($css, $showLabel);
$this->fileList['CSS'][$setInfo['NAME']]['FILES'][] = $css;
$cnt++;
}
else
{
$listAsset[] = $cssFile;
}
}
else
{
$resCss .= $this->insertCss($css, $showLabel);
$this->fileList['CSS'][$setInfo['NAME']]['FILES'][] = $css;
$cnt++;
}
}
$optimizedAsset = $this->optimizeAsset($listAsset, $setInfo['UNIQUE'], $setInfo['PREFIX'], $setInfo['NAME'], 'css', $data);
$resCss = $optimizedAsset['RESULT'].$resCss;
if ($location == AssetLocation::AFTER_CSS)
{
$additional[] = [
'FILES' => $optimizedAsset['FILES'],
'SOURCE_FILES' => $optimizedAsset['SOURCE_FILES'],
'RES' => $resCss
];
}
else
{
$this->assetList['CSS'][$setInfo['PARENT_NAME']][$setInfo['NAME']] = $optimizedAsset['FILES'];
$this->assetList['SOURCE_CSS'][$setInfo['PARENT_NAME']][$setInfo['NAME']] = ($optimizedAsset['SOURCE_FILES'] ?? []);
$this->targetList[$setInfo['PARENT_NAME']]['CSS_RES'][$setInfo['NAME']][] = $resCss;
}
}
foreach ($additional as $bundle)
{
$templateFiles = $this->assetList['CSS']['TEMPLATE']['TEMPLATE'] ?? [];
$this->assetList['CSS']['TEMPLATE']['TEMPLATE'] = array_merge($templateFiles, $bundle['FILES']);
$this->assetList['SOURCE_CSS']['TEMPLATE']['TEMPLATE'] = array_merge($templateFiles, $bundle['SOURCE_FILES']);
$this->targetList['TEMPLATE']['CSS_RES']['TEMPLATE'][] = $bundle['RES'];
}
unset($additional, $templateFiles, $bundle);
}
if ($this->ajax && !empty($ajaxList))
{
$res .= '';
}
if ($type == AssetShowTargetType::KERNEL)
{
$res .= $this->showAsset($setList, 'css', 'KERNEL');
}
elseif ($type == AssetShowTargetType::TEMPLATE_PAGE)
{
foreach ($this->targetList as $setName => $set)
{
if ($setName != 'TEMPLATE' && $setName != 'KERNEL')
{
$res .= $this->showAsset($setList, 'css', $setName);
}
}
$res .= $this->showAsset($setList, 'css', 'TEMPLATE');
}
else
{
foreach ($this->targetList as $setName => $set)
{
if ($setName != 'TEMPLATE')
{
$res .= $this->showAsset($setList, 'css', $setName);
}
}
$res .= $this->showAsset($setList, 'css', 'TEMPLATE');
}
return $res;
}