Example #1
0
 /**
  * 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;
 }
Example #2
0
 /**
  * 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;
 }
Example #3
0
 /**
  * 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;
 }
Example #4
0
 /**
  * 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);
 }
Example #7
0
 /**
  * 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']];
 }
Example #8
0
 /**
  * Generate target path
  *
  * @param \Magento\Cms\Model\Page $cmsPage
  * @return string
  */
 public function generateTargetPath($cmsPage)
 {
     return 'cms/page/view/page_id/' . $cmsPage->getId();
 }
Example #9
0
 /**
  * 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()));
 }
Example #10
0
 /**
  * @return \Magento\Framework\Phrase|string
  */
 protected function getTitle()
 {
     return $this->pageMock->getId() ? $this->pageMock->getTitle() : __('New Page');
 }