Redirecionamentos 301 automáticos para produtos desativados

14

Estou tentando adicionar redirecionamentos automáticos para um tipo de produto (evento) personalizado no Magento 1.7. Quando uma data do evento se passa, eu estou marcando o produto como desativado para que os usuários não acessem a página errada e também quero redirecionar para a lista de classes futuras, para que eu não tenha uma infinidade de erros 404 no meu local.

Existe uma maneira de ouvir um evento para obter o produto onde o 404 seria lançado, ou devo procurar uma extensão gratuita para isso em algum lugar? Estou pesquisando há um tempo e não vi nenhuma extensão que funcione bem.

kayluhb
fonte

Respostas:

17

Bem-vindo ao Magento.StackExchange!

Infelizmente, não existe um módulo pronto para o uso que faça isso por você.

É altamente recomendável que você reconsidere isso como uma opção. Seus usuários não são estúpidos (não importa o quão estupidamente eles se comportem) - muitos e muitos anos de análise de comércio eletrônico me mostraram que, quase 80% do tempo, os usuários que alcançam um 404 atingem a barra de pesquisa no local em segundos. Esforce-se para corrigir a pesquisa no site com uma melhor categorização (leia-se: preenchimento de palavras-chave).

Os índices do Google não são para sempre. Se você tem medo de 404, considere criar sua própria página 404. Aumente o seu potencial de conversão oferecendo um cupom de desconto de 5 a 10% para os inconvenientes ao acessar o 404. Ou, melhor ainda, não desative as páginas do produto. Em vez disso, desative a capacidade de compra (por exemplo, definida como fora de estoque) e forneça um bloco / link estático vinculado à página / categoria relevante.

Eu não me importo, apenas me dê códigos porque internets:

A codificação mais simples de um módulo com um observador que manipulará isso para você é trivial:

Designação de evento no 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() */);
        }
    }
}
philwinkle
fonte
1
Obrigado philwinkle. Vou tentar convencer o cliente a seguir suas primeiras sugestões. Concordo que provavelmente é má forma para seqüestrar um 404.
kayluhb