• Модуль: landing
  • Путь к файлу: ~/bitrix/modules/landing/lib/copy/integration/groupstepper.php
  • Класс: BitrixLandingCopyIntegrationGroupStepper
  • Вызов: GroupStepper::updateBlockIds
private function updateBlockIds(array $pageMapIds, array $blockMapIds): void
{
	ksort($pageMapIds);
	ksort($blockMapIds);

	LandingLanding::setEditMode();

	foreach ($pageMapIds as $pageId => $copiedPageId)
	{
		$pageMapIds['#landing'.$pageId] = '#landing'.$copiedPageId;
		unset($pageMapIds[$pageId]);
	}
	foreach ($blockMapIds as $blockId => $copiedBlockId)
	{
		$blockMapIds['#block'.$blockId] = '#block'.$copiedBlockId;
		unset($blockMapIds[$blockId]);
	}

	foreach ($pageMapIds as $pageId => $copiedPageId)
	{
		$copiedLandingInstance = LandingLanding::createInstance(mb_substr($copiedPageId, 8));
		foreach ($copiedLandingInstance->getBlocks() as $copiedBlock)
		{
			$content = $copiedBlock->getContent();
			$content = str_replace(
				array_keys($pageMapIds),
				array_values($pageMapIds),
				$content
			);
			$content = str_replace(
				array_keys($blockMapIds),
				array_values($blockMapIds),
				$content
			);
			$copiedBlock->saveContent($content);
			$copiedBlock->save();
		}
	}
}