Ласкаво просимо до Magento.StackExchange!
На жаль, не існує модуля, який би це зробив для вас.
Я б настійно рекомендую вам переглянути це як варіант. Ваші користувачі не дурні (як би не дурно вони себе поводили) - багато-багато років аналіз електронної комерції показав мені, що майже 80% часу користувачі, що досягають 404, потраплять на панель пошуку на сайті протягом декількох секунд. Докладіть зусиль для налаштування пошуку на веб-сайті з кращою категоризацією (читайте: начинка ключових слів).
Індекси Google не назавжди. Якщо ви боїтеся 404-х, подумайте про розширення сторінки 404. Збільште свій потенціал конверсії, запропонувавши купон зі знижкою на 5-10% тим, хто незручно натискає на 404. Або ще краще, не відключайте сторінки продуктів. Швидше, відключіть можливість придбання (наприклад, встановлено як немає на складі) та надайте статичний блок / посилання, що посилається на відповідну сторінку / категорію.
Мені все одно, просто дайте мені коди, оскільки інтернети:
На найпростішому кодуванні модуля з спостерігачем, який вирішить це для вас, є дрібницею:
Призначення події в config.xml:
<global>
<events>
<controller_action_postdispatch_catalog_product_view>
<observers>
<yourmodule_capcpv>
<class>YourCompany_YourModule_Model_Observer</class>
<method>catalogProductViewPostdispatch</method>
</yourmodule_capcpv>
</observers>
</controller_action_postdispatch_catalog_product_view>
</events>
</global>
app / code / local / YourCompany / YourModule / Модель / Observer.php:
<?php
class YourCompany_YourModule_Model_Observer
{
public function catalogProductViewPostdispatch($observer)
{
$controller = $observer->getEvent()->getControllerAction();
$product = Mage::registry('current_product');
if($product->getStatus()!=Mage_Catalog_Model_Product_Status::STATUS_ENABLED){
$action->getResponse()->setRedirect(/* your redirect URL here with Mage::getUrl() */);
}
}
}