/** * Create Custom URL Rewrite for old product/category URL after url_key changed * It will perform permanent redirect from old URL to new URL * * @param array $rewriteData New rewrite data * @param Varien_Object $rewrite Rewrite model * @return Mage_Catalog_Model_Url */ protected function _saveRewriteHistory($rewriteData, $rewrite) { if ($rewrite instanceof Varien_Object && $rewrite->getId()) { $rewriteData['target_path'] = $rewriteData['request_path']; $rewriteData['request_path'] = $rewrite->getRequestPath(); $rewriteData['id_path'] = $this->generateUniqueIdPath(); $rewriteData['is_system'] = 0; $rewriteData['options'] = 'RP'; // Redirect = Permanent $this->getResource()->saveRewriteHistory($rewriteData); } return $this; }
/** * Save urlindexer rewrite URL * * @param array $rewriteData * @param int|Varien_Object $rewrite * @return Loewenstark_UrlIndexer_Model_Resource_Url */ protected function _saveUrlIndexerRewrite($rewriteData, $rewrite) { // check if is a category if (isset($rewriteData['category_id']) && !empty($rewriteData['category_id']) && isset($rewriteData['is_system']) && intval($rewriteData['is_system']) == 1 && (isset($rewriteData['product_id']) && is_null($rewriteData['product_id']) || !isset($rewriteData['product_id']))) { $adapter = $this->_getWriteAdapter(); try { $adapter->insertOnDuplicate($this->getTable('urlindexer/url_rewrite'), $rewriteData); } catch (Exception $e) { Mage::logException($e); Mage::throwException(Mage::helper('urlindexer')->__('An error occurred while saving the URL rewrite in urlindexer')); } // delete old entry! if ($rewrite && $rewrite->getId()) { if ($rewriteData['request_path'] != $rewrite->getRequestPath()) { // Update existing rewrites history and avoid chain redirects $where = array('target_path = ?' => $rewrite->getRequestPath()); if ($rewrite->getStoreId()) { $where['store_id = ?'] = (int) $rewrite->getStoreId(); } $adapter->delete($this->getTable('urlindexer/url_rewrite'), $where); } } } }
/** * Saves rewrite history * * @param array $rewriteData * @return Mage_Catalog_Model_Resource_Url */ public function saveRewriteHistory($rewriteData) { $rewriteData = new Varien_Object($rewriteData); // check if rewrite exists with save request_path $rewrite = $this->getRewriteByRequestPath($rewriteData->getRequestPath(), $rewriteData->getStoreId()); if ($rewrite === false) { // create permanent redirect $this->_getWriteAdapter()->insert($this->getMainTable(), $rewriteData->getData()); } return $this; }
/** * Get item URL * * In most cases should be overriden in descendant blocks * * @param Varien_Object $item * @return string */ public function getItemUrl($item) { return $this->getBaseUrl() . $item->getRequestPath(); }