/** * Append the CMS page viewed identifier and title to the list of tracked variables * * @return array */ public function getVariables() { $variables = []; if ($this->page->getId()) { $variables['cms.identifier'] = $this->page->getIdentifier(); $variables['cms.title'] = $this->page->getTitle(); } return $variables; }
/** * Renders CMS page * * @param Action $action * @param int $pageId * @param bool $renderLayout * @return bool */ protected function _renderPage(Action $action, $pageId = null, $renderLayout = true) { if (!is_null($pageId) && $pageId !== $this->_page->getId()) { $delimiterPosition = strrpos($pageId, '|'); if ($delimiterPosition) { $pageId = substr($pageId, 0, $delimiterPosition); } $this->_page->setStoreId($this->_storeManager->getStore()->getId()); if (!$this->_page->load($pageId)) { return false; } } if (!$this->_page->getId()) { return false; } $inRange = $this->_localeDate->isScopeDateInInterval(null, $this->_page->getCustomThemeFrom(), $this->_page->getCustomThemeTo()); if ($this->_page->getCustomTheme()) { if ($inRange) { $this->_design->setDesignTheme($this->_page->getCustomTheme()); } } $this->_view->getLayout()->getUpdate()->addHandle('default')->addHandle('cms_page_view'); $this->_view->addPageLayoutHandles(array('id' => $this->_page->getIdentifier())); $this->_view->addActionLayoutHandles(); if ($this->_page->getRootTemplate()) { if ($this->_page->getCustomRootTemplate() && $this->_page->getCustomRootTemplate() != 'empty' && $inRange) { $handle = $this->_page->getCustomRootTemplate(); } else { $handle = $this->_page->getRootTemplate(); } $this->_pageLayout->applyHandle($handle); } $this->_eventManager->dispatch('cms_page_render', array('page' => $this->_page, 'controller_action' => $action)); $this->_view->loadLayoutUpdates(); if ($this->_page->getCustomLayoutUpdateXml() && $inRange) { $layoutUpdate = $this->_page->getCustomLayoutUpdateXml(); } else { $layoutUpdate = $this->_page->getLayoutUpdateXml(); } if (!empty($layoutUpdate)) { $this->_view->getLayout()->getUpdate()->addUpdate($layoutUpdate); } $this->_view->generateLayoutXml()->generateLayoutBlocks(); $contentHeadingBlock = $this->_view->getLayout()->getBlock('page_content_heading'); if ($contentHeadingBlock) { $contentHeading = $this->_escaper->escapeHtml($this->_page->getContentHeading()); $contentHeadingBlock->setContentHeading($contentHeading); } if ($this->_page->getRootTemplate()) { $this->_pageLayout->applyTemplate($this->_page->getRootTemplate()); } /* @TODO: Move catalog and checkout storage types to appropriate modules */ $messageBlock = $this->_view->getLayout()->getMessagesBlock(); $messageBlock->addStorageType($this->messageManager->getDefaultGroup()); $messageBlock->addMessages($this->messageManager->getMessages(true)); if ($renderLayout) { $this->_view->renderLayout(); } return true; }
/** * Return result CMS page * * @param Action $action * @param null $pageId * @return \Magento\Framework\View\Result\Page|bool */ public function prepareResultPage(Action $action, $pageId = null) { if ($pageId !== null && $pageId !== $this->_page->getId()) { $delimiterPosition = strrpos($pageId, '|'); if ($delimiterPosition) { $pageId = substr($pageId, 0, $delimiterPosition); } $this->_page->setStoreId($this->_storeManager->getStore()->getId()); if (!$this->_page->load($pageId)) { return false; } } if (!$this->_page->getId()) { return false; } $inRange = $this->_localeDate->isScopeDateInInterval(null, $this->_page->getCustomThemeFrom(), $this->_page->getCustomThemeTo()); if ($this->_page->getCustomTheme()) { if ($inRange) { $this->_design->setDesignTheme($this->_page->getCustomTheme()); } } /** @var \Magento\Framework\View\Result\Page $resultPage */ $resultPage = $this->resultPageFactory->create(); $this->setLayoutType($inRange, $resultPage); $resultPage->addHandle('cms_page_view'); $resultPage->addPageLayoutHandles(['id' => $this->_page->getIdentifier()]); $this->_eventManager->dispatch('cms_page_render', ['page' => $this->_page, 'controller_action' => $action]); if ($this->_page->getCustomLayoutUpdateXml() && $inRange) { $layoutUpdate = $this->_page->getCustomLayoutUpdateXml(); } else { $layoutUpdate = $this->_page->getLayoutUpdateXml(); } if (!empty($layoutUpdate)) { $resultPage->getLayout()->getUpdate()->addUpdate($layoutUpdate); } $contentHeadingBlock = $resultPage->getLayout()->getBlock('page_content_heading'); if ($contentHeadingBlock) { $contentHeading = $this->_escaper->escapeHtml($this->_page->getContentHeading()); $contentHeadingBlock->setContentHeading($contentHeading); } /* @TODO: Move catalog and checkout storage types to appropriate modules */ $messageBlock = $resultPage->getLayout()->getMessagesBlock(); $messageBlock->addStorageType($this->messageManager->getDefaultGroup()); $messageBlock->addMessages($this->messageManager->getMessages(true)); return $resultPage; }
/** * Create url rewrite object * * @param int $storeId * @param string|null $redirectType Null or one of OptionProvider const * @return UrlRewrite */ protected function createUrlRewrite($storeId, $redirectType = null) { return $this->converter->convertArrayToObject([UrlRewrite::ENTITY_TYPE => self::ENTITY_TYPE, UrlRewrite::ENTITY_ID => $this->cmsPage->getId(), UrlRewrite::STORE_ID => $storeId, UrlRewrite::REQUEST_PATH => $this->cmsPage->getIdentifier(), UrlRewrite::TARGET_PATH => 'cms/page/view/page_id/' . $this->cmsPage->getId(), UrlRewrite::REDIRECT_TYPE => $redirectType]); }
/** * Get canonical product url path * * @param \Magento\Cms\Model\Page $cmsPage * @return string */ public function getCanonicalUrlPath($cmsPage) { return 'cms/page/view/page_id/' . $cmsPage->getId(); }
/** * Create url rewrite object * * @param int $storeId * @param int $redirectType * @return \Magento\UrlRewrite\Service\V1\Data\UrlRewrite */ protected function createUrlRewrite($storeId, $redirectType = 0) { return $this->urlRewriteFactory->create()->setStoreId($storeId)->setEntityType(self::ENTITY_TYPE)->setEntityId($this->cmsPage->getId())->setRequestPath($this->cmsPage->getIdentifier())->setTargetPath($this->cmsPageUrlPathGenerator->getCanonicalUrlPath($this->cmsPage))->setIsAutogenerated(1)->setRedirectType($redirectType); }
/** * Get data for saving code model * * @return array */ protected function _getCodeData() { return ['entity_type' => \Magento\GoogleOptimizer\Model\Code::ENTITY_TYPE_PAGE, 'entity_id' => $this->_page->getId(), 'store_id' => 0, 'experiment_script' => $this->_params['experiment_script']]; }
/** * Generate target path * * @param \Magento\Cms\Model\Page $cmsPage * @return string */ public function generateTargetPath($cmsPage) { return 'cms/page/view/page_id/' . $cmsPage->getId(); }
/** * Return row url for js event handlers * * @param \Magento\Cms\Model\Page|\Magento\Framework\Object $row * @return string */ public function getRowUrl($row) { return $this->getUrl('adminhtml/*/edit', array('cms_page' => $row->getId())); }
/** * @return \Magento\Framework\Phrase|string */ protected function getTitle() { return $this->pageMock->getId() ? $this->pageMock->getTitle() : __('New Page'); }