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