Автоматическое перенаправление 301 для отключенных продуктов

14

Я пытаюсь добавить автоматические перенаправления для пользовательского типа продукта (события) в Magento 1.7. Когда дата события прошла, я отмечаю продукт как отключенный, чтобы пользователи не переходили на неправильную страницу, и я также хочу перенаправить на список будущих классов, чтобы у меня не было 404 ошибок на моем сайт.

Есть ли способ прослушать событие для получения продукта, где 404 будет брошен, или я должен искать где-нибудь бесплатное расширение для этого? Я искал некоторое время и не видел каких-либо расширений, которые работают хорошо.

kayluhb
источник

Ответы:

17

Добро пожаловать в Magento.StackExchange!

К сожалению, нет готового модуля, который сделает это за вас.

Я настоятельно рекомендую вам пересмотреть это как вариант. Ваши пользователи не глупы (независимо от того, насколько глупо они себя ведут) - многие, многие годы анализа электронной коммерции показали мне, что почти в 80% случаев пользователи, достигшие 404, будут попадать на панель поиска на сайте в течение нескольких секунд. Приложите усилия для улучшения поиска по сайту с помощью лучшей категоризации (читай: заполнение ключевыми словами).

Google индексы не вечны. Если вы боитесь 404-х, подумайте о том, чтобы улучшить свою страницу 404-го. Увеличьте свой потенциал конверсии, предложив купон на скидку 5-10% тем, кто испытывает неудобства, выбрав 404. Или, что еще лучше, не отключайте страницы продуктов. Скорее, отключите возможность покупки (например, установите как нет в наличии) и предоставьте статический блок / ссылку, которая ссылается на соответствующую страницу / категорию.

Мне все равно, просто дайте мне коды, потому что интернет:

В самом простом коде модуль с наблюдателем, который будет обрабатывать это для вас, тривиален:

Обозначение события в 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 / Модель / 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
источник
1
Спасибо, Филвинкл. Я постараюсь убедить клиента пойти с вашими первыми предложениями. Я согласен, что это, вероятно, плохая форма, чтобы угнать 404.
kayluhb