- Модуль: main
- Путь к файлу: ~/bitrix/modules/main/lib/page/asset.php
- Класс: BitrixMainPageAsset
- Вызов: Asset::getJs
function getJs($type = AssetShowTargetType::ALL)
{
static $setList = [];
$res = '';
$type = (int) $type;
$type = (($type == AssetShowTargetType::KERNEL && $this->headString && !$this->headScript) ? AssetShowTargetType::ALL : $type);
$optimize = $this->optimizeJs();
if (empty($setList))
{
$this->prepareJs();
$setList = $this->getTargetList('JS');
foreach ($setList as $setInfo)
{
if (!isset($this->js[$setInfo['NAME']]))
{
continue;
}
$data = '';
if (!empty($this->moduleInfo['JS'][$setInfo['MODULE_NAME']]['DATA']))
{
$data = $this->moduleInfo['JS'][$setInfo['MODULE_NAME']]['DATA'];
}
$resJs = '';
$listAsset = [];
foreach ($this->js[$setInfo['NAME']] as $jsFile)
{
$js = $jsFile['FULL_PATH'];
if ($optimize)
{
if ($jsFile['SKIP'])
{
$this->fileList['JS'][$setInfo['NAME']]['FILES'][] = $js;
$resJs .= "n";
}
else
{
$listAsset[] = $jsFile;
}
}
else
{
$this->fileList['JS'][$setInfo['NAME']]['FILES'][] = $js;
$resJs .= "n";
}
}
$optAsset = $this->optimizeAsset($listAsset, $setInfo['UNIQUE'], $setInfo['PREFIX'], $setInfo['NAME'], 'js', $data);
$this->assetList['JS'][$setInfo['PARENT_NAME']][$setInfo['NAME']] = $optAsset['FILES'];
$this->assetList['SOURCE_JS'][$setInfo['PARENT_NAME']][$setInfo['NAME']] = ($optAsset['SOURCE_FILES'] ?? []);
$this->targetList[$setInfo['PARENT_NAME']]['JS_RES'][$setInfo['NAME']][] = $optAsset['RESULT'].$resJs;
}
unset($optAsset, $resJs, $listAsset);
}
if ($type == AssetShowTargetType::KERNEL && ($this->mode & $this->targetList['KERNEL']['MODE']))
{
$setName = 'KERNEL';
$res .= $this->getStrings(AssetLocation::AFTER_CSS);
$res .= $this->showAsset($setList,'js', $setName);
$res .= $this->showFilesList();
$res .= $this->getStrings(AssetLocation::AFTER_JS_KERNEL);
if (!$this->bodyScript)
{
$res .= $this->getStrings(AssetLocation::BODY_END);
$res .= $this->showAsset($setList,'js', 'BODY');
}
}
elseif ($type == AssetShowTargetType::TEMPLATE_PAGE)
{
foreach ($this->targetList as $setName => $set)
{
if ($setName != 'KERNEL' && $setName != 'BODY')
{
$setName = $this->fixJsSetOrder($setName);
$res .= $this->showAsset($setList,'js', $setName);
}
}
$res .= $this->getStrings(AssetLocation::AFTER_JS);
}
elseif ($type == AssetShowTargetType::BODY && ($this->mode & $this->targetList['BODY']['MODE']))
{
$setName = 'BODY';
$res .= $this->getStrings(AssetLocation::BODY_END);
$res .= $this->showAsset($setList,'js', $setName);
}
else
{
foreach ($this->targetList as $setName => $set)
{
if ($this->mode & $set['MODE'])
{
$setName = $this->fixJsSetOrder($setName);
if ($setName == 'KERNEL')
{
$res .= $this->getStrings(AssetLocation::AFTER_CSS);
$res .= $this->showAsset($setList, 'js', $setName);
$res .= $this->showFilesList();
$res .= $this->getStrings(AssetLocation::AFTER_JS_KERNEL);
if (!$this->bodyScript)
{
$res .= $this->getStrings(AssetLocation::BODY_END);
$res .= $this->showAsset($setList,'js', 'BODY');
}
}
elseif ($setName != 'BODY')
{
$res .= $this->showAsset($setList, 'js', $setName);
}
}
}
$res .= $this->getStrings(AssetLocation::AFTER_JS);
}
return (trim($res) == '' ? $res : $res."n");
}