Redirection 301 automatique pour les produits désactivés

14

J'essaie d'ajouter des redirections automatiques pour un type de produit (événement) personnalisé dans Magento 1.7. Quand une date d'événement est passée, je marque le produit comme désactivé pour que les utilisateurs ne se rendent pas à la mauvaise page, et je veux également rediriger vers la liste des futures classes afin que je n'aie pas une pléthore d'erreurs 404 sur mon site.

Existe-t-il un moyen d'écouter un événement pour obtenir le produit où le 404 serait lancé, ou devrais-je rechercher une extension gratuite pour cela quelque part? Je recherche depuis un certain temps et je n'ai pas vu d'extensions qui fonctionnent bien.

kayluhb
la source

Réponses:

17

Bienvenue sur Magento.StackExchange!

Malheureusement, aucun module prêt à l'emploi ne le fera pour vous.

Je vous encourage fortement à reconsidérer cette option. Vos utilisateurs ne sont pas stupides (même s'ils se comportent bêtement) - de nombreuses années d'analyse du commerce électronique m'ont montré que, près de 80% du temps, les utilisateurs atteignant un 404 atteindront la barre de recherche sur site en quelques secondes. Mettez vos efforts à corriger votre recherche de site avec une meilleure catégorisation (lire: bourrage de mots clés).

Les index Google ne sont pas éternels. Si vous avez peur des 404, pensez à embellir votre page 404 elle-même. Augmentez votre potentiel de conversion en offrant un coupon de réduction de 5 à 10% à ceux qui ne sont pas gênés en frappant un 404. Ou, mieux encore, ne désactivez pas les pages de produits. Désactivez plutôt la possibilité d'acheter (par exemple, définissez comme en rupture de stock) et fournissez un bloc / lien statique qui renvoie à la page / catégorie appropriée.

Je m'en fiche, donnez-moi juste des codes car les internets:

Au plus simple, coder un module avec un observateur qui s'en occupera pour vous est trivial:

Désignation de l'événement dans 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
la source
1
Merci philwinkle. Je vais essayer de convaincre le client d'aller avec vos premières suggestions. Je suis d'accord que c'est probablement une mauvaise forme de détourner un 404.
kayluhb