禁用产品的自动301重定向


14

我正在尝试在Magento 1.7中为自定义产品类型(事件)添加自动重定向。活动日期结束后,我将产品标记为已禁用,这样用户就不会进入错误的页面,并且我还想重定向到将来的课程列表,因此我没有过多的404错误现场。

有没有一种方法可以监听事件,以获取将404抛出该产品的事件,还是我应该在某个地方为此寻找免费的扩展程序?我已经搜索了一段时间,还没有看到任何运行良好的扩展。

Answers:


17

欢迎来到Magento.StackExchange!

不幸的是,没有现成的模块可以为您完成此任务。

我强烈建议您重新考虑此选项。您的用户并不愚蠢(无论他们的行为多么愚蠢)-多年的电子商务分析表明,几乎80%的用户中,达到404的用户将在几秒钟内点击现场搜索栏。尽力通过更好的分类来完善您的网站搜索(阅读:关键字填充)。

Google索引不会永远存在。如果您担心404,请考虑整理404页面本身。为遇到404错误的人提供5-10%的折扣券,以增加您的转化潜力。或者,更好的是,不要禁用产品页面。而是禁用购买功能(例如,设置为缺货),并提供链接到相关页面/类别的静态块/链接。

我不在乎,只给我代码,因为互联网:

最简单的方法是用观察者编码一个模块,该模块将为您处理这个问题:

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>

应用/代码/本地/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
谢谢philwinkle。我会说服客户提出您的第一个建议。我认为,它可能是不好的形式劫持404
kayluhb
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.