Automatyczne przekierowania 301 dla niepełnosprawnych produktów


14

Próbuję dodać automatyczne przekierowania dla niestandardowego typu produktu (zdarzenia) w Magento 1.7. Kiedy minęła data wydarzenia, oznaczam produkt jako wyłączony, aby użytkownicy nie przechodzili na niewłaściwą stronę, a także chcę przekierować na listę przyszłych klas, aby nie było mnóstwo błędów 404 na moim teren.

Czy istnieje sposób na wysłuchanie wydarzenia, w którym produkt zostałby rzucony 404, czy powinienem szukać gdzieś bezpłatnego rozszerzenia? Szukałem przez jakiś czas i nie widziałem żadnych dodatków, które działałyby dobrze.

Odpowiedzi:


17

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() */);
        }
    }
}

1
Dzięki philwinkle. Spróbuję przekonać klienta, aby poszedł z twoimi pierwszymi sugestiami. Zgadzam się, że prawdopodobnie jest to zła forma porwania 404.
kayluhb
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.