- Модуль: main
- Путь к файлу: ~/bitrix/modules/main/lib/composite/engine.php
- Класс: BitrixMainCompositeEngine
- Вызов: Engine::getDividedPageData
static function getDividedPageData($content)
{
$data = array(
"dynamic" => array(),
"static" => "",
"md5" => "",
);
$dynamicAreas = StaticArea::getDynamicAreas();
if (!empty($dynamicAreas) && ($areas = self::getFrameIndexes($content)) !== false)
{
$offset = 0;
$pageBlocks = self::getPageBlocks();
foreach ($areas as $area)
{
$dynamicArea = StaticArea::getDynamicArea($area->id);
if ($dynamicArea === null)
{
continue;
}
$realId = $dynamicArea->getContainerId() !== null ? $dynamicArea->getContainerId() : "bxdynamic_".$area->id;
$assets = Asset::getInstance()->getAssetInfo($dynamicArea->getAssetId(), $dynamicArea->getAssetMode());
$areaContent = substr($content, $area->openTagEnd, $area->closingTagStart - $area->openTagEnd);
$areaContentMd5 = substr(md5($areaContent), 0, 12);
$blockId = $dynamicArea->getId();
$hasSameContent = isset($pageBlocks[$blockId]) && $pageBlocks[$blockId] === $areaContentMd5;
if (!$hasSameContent)
{
$data["dynamic"][] = array(
"ID" => $realId,
"CONTENT" => $areaContent,
"HASH" => $areaContentMd5,
"PROPS" => array(
"ID" => $area->id,
"CONTAINER_ID" => $dynamicArea->getContainerId(),
"USE_BROWSER_STORAGE" => $dynamicArea->getBrowserStorage(),
"AUTO_UPDATE" => $dynamicArea->getAutoUpdate(),
"USE_ANIMATION" => $dynamicArea->getAnimation(),
"CSS" => $assets["CSS"],
"JS" => $assets["JS"],
"BUNDLE_JS" => $assets["BUNDLE_JS"],
"BUNDLE_CSS" => $assets["BUNDLE_CSS"],
"STRINGS" => $assets["STRINGS"],
),
);
}
$data["static"] .= substr($content, $offset, $area->openTagStart - $offset);
if ($dynamicArea->getContainerId() === null)
{
$data["static"] .=
''.
$dynamicArea->getStub().
'';
}
else
{
$data["static"] .= $dynamicArea->getStub();
}
$offset = $area->closingTagEnd;
}
$data["static"] .= substr($content, $offset);
}
else
{
$data["static"] = $content;
}
self::replaceSessid($data["static"]);
Asset::getInstance()->moveJsToBody($data["static"]);
$data["md5"] = md5($data["static"]);
return $data;
}