Example #1
0
 /**
  * Override URL rewrite data, basing on current CMS page
  *
  * @param \Magento\UrlRewrite\Model\UrlRewrite $model
  * @return void
  * @throws \Magento\Framework\Model\Exception
  */
 protected function _handleCmsPageUrlRewrite($model)
 {
     /** @var $cmsPage \Magento\Cms\Model\Page */
     $cmsPage = $this->_getCmsPage();
     if (!$cmsPage->getId()) {
         return;
     }
     /** @var $cmsPageUrlRewrite \Magento\Cms\Model\Page\Urlrewrite */
     $cmsPageUrlRewrite = $this->_objectManager->create('Magento\\Cms\\Model\\Page\\Urlrewrite');
     $idPath = $cmsPageUrlRewrite->generateIdPath($cmsPage);
     $model->setIdPath($idPath);
     // if redirect specified try to find friendly URL
     $generateTarget = true;
     if ($model->getId() && $this->_objectManager->get('Magento\\UrlRewrite\\Helper\\UrlRewrite')->hasRedirectOptions($model)) {
         /** @var $rewriteResource \Magento\Catalog\Model\Resource\Url */
         $rewriteResource = $this->_objectManager->create('Magento\\Catalog\\Model\\Resource\\Url');
         /** @var $rewrite \Magento\UrlRewrite\Model\UrlRewrite */
         $rewrite = $rewriteResource->getRewriteByIdPath($idPath, $model->getStoreId());
         if (!$rewrite) {
             throw new Exception(__('Chosen cms page does not associated with the chosen store.'));
         } elseif ($rewrite->getId() && $rewrite->getId() != $model->getId()) {
             $model->setTargetPath($rewrite->getRequestPath());
             $generateTarget = false;
         }
     }
     if ($generateTarget) {
         $model->setTargetPath($cmsPageUrlRewrite->generateTargetPath($cmsPage));
     }
 }