Forked from edannenberg/magento_url_rewrite.patch
Last active
December 5, 2017 18:07
-
-
Save Alanaktion/31ad1e56c520a7aeb90ba04eda7626da to your computer and use it in GitHub Desktop.
Fixes the catalog url rewrite indexer in Magento 1.7.x-1.9.x
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff -rupN mage_org/app/code/core/Mage/Catalog/Model/Url.php src_shop/app/code/core/Mage/Catalog/Model/Url.php | |
--- mage_org/app/code/core/Mage/Catalog/Model/Url.php 2013-11-19 00:48:25.679009391 +0100 | |
+++ src_shop/app/code/core/Mage/Catalog/Model/Url.php 2013-11-19 00:49:24.188005601 +0100 | |
@@ -643,13 +643,24 @@ class Mage_Catalog_Model_Url | |
$this->_rewrite = $rewrite; | |
return $requestPath; | |
} | |
+ | |
+ // avoid unnecessary creation of new url_keys for duplicate url keys | |
+ $noSuffixPath = substr($requestPath, 0, -(strlen($suffix))); | |
+ $regEx = '#^('.preg_quote($noSuffixPath).')(-([0-9]+))?('.preg_quote($suffix).')#i'; | |
+ $currentRewrite = $this->getResource()->getRewriteByIdPath($idPath, $storeId); | |
+ if ($currentRewrite && preg_match($regEx, $currentRewrite->getRequestPath(), $match)) { | |
+ $this->_rewrite = $currentRewrite; | |
+ return $currentRewrite->getRequestPath(); | |
+ } | |
+ | |
// match request_url abcdef1234(-12)(.html) pattern | |
$match = array(); | |
$regularExpression = '#^([0-9a-z/-]+?)(-([0-9]+))?('.preg_quote($suffix).')?$#i'; | |
if (!preg_match($regularExpression, $requestPath, $match)) { | |
return $this->getUnusedPath($storeId, '-', $idPath); | |
} | |
- $match[1] = $match[1] . '-'; | |
+ $match[1] = $noSuffixPath . '-'; // always use full prefix of url_key | |
+ unset($match[3]); // don't start counting with a possible number in the url_key | |
$match[4] = isset($match[4]) ? $match[4] : ''; | |
$lastRequestPath = $this->getResource() |
Author
Alanaktion
commented
Dec 5, 2017
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment