Witamy w Magento.StackExchange!
Niestety nie ma gotowego modułu, który zrobiłby to za Ciebie.
Gorąco zachęcam do ponownego rozważenia tej opcji. Twoi użytkownicy nie są głupi (bez względu na to, jak głupio się zachowują) - wiele, wiele lat analizy eCommerce pokazało mi, że w prawie 80% przypadków użytkownicy osiągający 404 trafią na pasek wyszukiwania na stronie w ciągu kilku sekund. Postaraj się poprawić wyszukiwanie w witrynie za pomocą lepszej kategoryzacji (czytaj: upychanie słów kluczowych).
Indeksy Google nie są wieczne. Jeśli boisz się 404, rozważ utworzenie własnej strony 404. Zwiększ swój potencjał konwersji, oferując kupon rabatowy 5–10% osobom niedogodnym, trafiając 404. Lub, lepiej, nie wyłączaj stron produktów. Zamiast tego wyłącz możliwość zakupu (np. Brak w magazynie) i podaj statyczny blok / link, który prowadzi do odpowiedniej strony / kategorii.
Nie obchodzi mnie to, po prostu daj mi kody, ponieważ internety:
W najprostszym przypadku kodowanie modułu za pomocą obserwatora, który to załatwi, jest trywialne:
Oznaczenie zdarzenia w 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 / Model / 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() */);
}
}
}