/** * 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)); } }