Redirecciones automáticas 301 para productos deshabilitados

14

Estoy tratando de agregar redireccionamientos automáticos para un tipo de producto (evento) personalizado en Magento 1.7. Cuando ha pasado una fecha de evento, estoy marcando el producto como deshabilitado para que los usuarios no vayan a la página incorrecta, y también quiero redirigir a la lista de clases futuras para que no tenga una gran cantidad de errores 404 en mi sitio.

¿Hay alguna manera de escuchar un evento para obtener el producto donde se lanzaría el 404, o debería buscar una extensión gratuita para esto en alguna parte? He estado buscando durante un tiempo y no he visto ninguna extensión que funcione bien.

kayluhb
fuente

Respuestas:

17

Bienvenido a Magento.StackExchange!

Desafortunadamente, no hay un módulo listo para usar que lo haga por usted.

Le recomiendo que reconsidere esto como una opción. Sus usuarios no son estúpidos (no importa cuán estúpidamente se comporten): muchos, muchos años de análisis de comercio electrónico me han demostrado que, casi el 80% del tiempo, los usuarios que alcanzan un 404 alcanzarán la barra de búsqueda en el sitio en cuestión de segundos. Esfuércese en arreglar la búsqueda de su sitio con una mejor categorización (lea: relleno de palabras clave).

Los índices de Google no son para siempre. Si tienes miedo de los 404, considera arreglar tu propia página 404. Aumente su potencial de conversión al ofrecer un cupón de descuento del 5-10% a los inconvenientes al alcanzar un 404. O, mejor aún, no deshabilite las páginas de productos. En cambio, desactive la posibilidad de comprar (por ejemplo, establecer como agotado) y proporcione un bloque / enlace estático que enlace a la página / categoría correspondiente.

No me importa, solo dame códigos porque Internet:

En su forma más simple, la codificación de un módulo con un observador que se encargará de esto es trivial:

Designación de evento en 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>

aplicación / código / 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
fuente
1
Gracias philwinkle. Trataré de convencer al cliente de que vaya con sus primeras sugerencias. Estoy de acuerdo en que probablemente sea una mala forma secuestrar un 404.
kayluhb