/** * Return result blog page * * @param Action $action * @param \Magento\Framework\Model\AbstractModel $page * @return \Magento\Framework\View\Result\Page|bool */ public function prepareResultPage(Action $action, $page) { if ($page->getCustomThemeFrom() && $page->getCustomThemeTo()) { $inRange = $this->_localeDate->isScopeDateInInterval(null, $page->getCustomThemeFrom(), $page->getCustomThemeTo()); } else { $inRange = false; } if ($page->getCustomTheme()) { if ($inRange) { $this->_design->setDesignTheme($page->getCustomTheme()); } } /** @var \Magento\Framework\View\Result\Page $resultPage */ $resultPage = $this->resultPageFactory->create(); if ($inRange && $page->getCustomLayout() && $page->getCustomLayout() != 'empty') { $handle = $page->getCustomLayout(); } else { $handle = $page->getPageLayout(); } if ($handle) { $resultPage->getConfig()->setPageLayout($handle); } $fullActionName = $action->getRequest()->getFullActionName(); $resultPage->addHandle($fullActionName); $resultPage->addPageLayoutHandles(['id' => $page->getIdentifier()]); $this->_eventManager->dispatch($fullActionName . '_render', ['page' => $page, 'controller_action' => $action]); if ($inRange && $page->getCustomLayoutUpdateXml()) { $layoutUpdate = $page->getCustomLayoutUpdateXml(); } else { $layoutUpdate = $page->getLayoutUpdateXml(); } if ($layoutUpdate) { $resultPage->getLayout()->getUpdate()->addUpdate($layoutUpdate); } return $resultPage; }