/** * Override URL rewrite data, basing on current CMS page * * @param Mage_Core_Model_Url_Rewrite $model */ private function _handleCmsPageUrlRewrite($model) { /** @var $cmsPage Mage_Cms_Model_Page */ $cmsPage = $this->_getCmsPage(); if (!$cmsPage->getId()) { return; } /** @var $cmsPageUrlRewrite Mage_Cms_Model_Page_Urlrewrite */ $cmsPageUrlRewrite = Mage::getModel('Mage_Cms_Model_Page_Urlrewrite'); $idPath = $cmsPageUrlRewrite->generateIdPath($cmsPage); $model->setIdPath($idPath); // if redirect specified try to find friendly URL $generateTarget = true; if (Mage::helper('Mage_Core_Helper_Url_Rewrite')->hasRedirectOptions($model)) { /** @var $rewriteResource Mage_Catalog_Model_Resource_Url */ $rewriteResource = Mage::getResourceModel('Mage_Catalog_Model_Resource_Url'); /** @var $rewrite Mage_Core_Model_Url_Rewrite */ $rewrite = $rewriteResource->getRewriteByIdPath($idPath, $model->getStoreId()); if (!$rewrite) { Mage::throwException(Mage::helper('Mage_Adminhtml_Helper_Data')->__('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)); } }