ambimax® ProductNotFoundHandler
When importing products the url-key is extended by a continuing number that makes it unique.
Additionally a permanent redirect is created from the old url to the new one. Therefore the
core_url_rewrite
table grows rapidly and slows many Magento sites down., (*1)
To solve this problem we add the sku to the urls and make old urls forever (as long as the product with same sku exists)
redirectable without overhead. This module reads the sku from url and redirects to the new url., (*2)
Usage
Url must use this pattern, (*3)
http://domain.tld/any-string-{sku}-{skuLength}/
Sku must not contain any characters except for #[^0-9a-z]+#i, (*4)
Composer
composer require ambimax/magento-module-ambimax-productnotfoundhandler
Installation
1) Install like any other (modman/composer) module, (*5)
2) To enable it please set Configuration > Web > Default Pages > CMS No Route Page (web/default/no_route) to productnotfoundhandler/index/noRoute
(default: cms/index/noRoute), (*6)
3) Add sku and skuLength to all url-key attribute of all products, (*7)
Example import usage:, (*8)
/**
* Prepare product data on import
*
* @param array $productData
* @return array
*/
public function row(array $productData)
{
// ...
$url = array($productData['amazon_titel'], $productData['sku'], strlen($productData['sku']));
$product['url_key'] = $this->formatUrlKey(implode(' ', $url));
// ...
return $productData;
}
/**
* Format Key for URL
*
* @param string $str
* @return string
*/
public function formatUrlKey($str)
{
$urlKey = preg_replace('#[^0-9a-z]+#i', '-', strtolower(Mage::helper('catalog/product_url')->format($str)));
$urlKey = trim($urlKey, '-');
return $urlKey;
}
Disclaimer
This module comes with no warranty at all., (*9)
License
MIT License, (*10)