Exemple #1
0
 /**
  * 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;
 }