Перенаправление связанных продуктов на сгруппированный продукт

magento.stackexchange https://magento.stackexchange.com//questions/67717

Вопрос

Я расширял свой каталог и наткнулся на нескольких поставщиков, предлагающих точно такую ​​же продукцию.Единственная разница – это цена и уровень запасов.

Чтобы избежать дублирования продуктов на моем веб-сайте (и штрафов поисковых систем), я создал Grouped Product с названием продукта и добавили 2 одинаковых продукта от 2 разных поставщиков и установили для них значение «Not visible individually"

Проблема, с которой я сейчас сталкиваюсь, заключается в том, что, установив Associated Products к "Not visible individually" заключается в том, что ссылка становится неработающей.

Я хотел бы автоматически создать перенаправление на Grouped Product для всех Associated Products

Как создать перенаправление Associated Products к Grouped Product ?

Это было полезно?

Решение

Идея такова.При просмотре страницы продукта проверьте, принадлежит ли продукт к сгруппированному продукту.Если да, перейдите на главную страницу продукта.
Есть подвох.Простой продукт может быть частью более чем одного сгруппированного продукта.В этом случае самый простой подход — перенаправить на первый найденный.

Вот код, который вы можете использовать.
Создайте расширение.Давайте назовем это StackExchange_Grouped.

app/etc/modules/StackExchange_Grouped.xml - файл декларации

<?xml version="1.0"?>
<config>
    <modules>
        <StackExchange_Grouped>
            <codePool>local</codePool>
            <active>true</active>
            <depends>
                <Mage_Catalog />
            </depends>
        </StackExchange_Grouped>
    </modules>
</config>

app/code/local/StackExchange/Grouped/etc/config.xml - файл конфигурации модуля, в котором вы объявляете наблюдателя на странице просмотра продукта

<?xml version="1.0"?>
<config>
    <modules>
        <StackExchange_Grouped>
            <version>1.0.0</version>
        </StackExchange_Grouped>
    </modules>
    <global>
        <models>
            <stackexchange_grouped>
                <class>StackExchange_Grouped_Model</class>
            </stackexchange_grouped>
        </models>
    </global>
    <frontend>
        <events>
            <controller_action_predispatch_catalog_product_view>
                <observers>
                    <stackexchange_grouped>
                        <class>stackexchange_grouped/observer</class>
                        <method>redirectToParent</method>
                    </stackexchange_grouped>
                </observers>
            </controller_action_predispatch_catalog_product_view>
        </events>
    </frontend>
</config>

app/code/local/StackExchange/Grouped/Model/Observer.php - наблюдатель, который должен перенаправить на сгруппированную страницу продукта.

<?php
class StackExchange_Grouped_Model_Observer
{
    public function redirectToParent($observer)
    {
        $id = Mage::app()->getRequest()->getParam('id');
        $groupedParentIds = Mage::getResourceSingleton('catalog/product_link')
            ->getParentIdsByChild($id,
                Mage_Catalog_Model_Product_Link::LINK_TYPE_GROUPED);
        if (isset($groupedParentIds[0])) {
            $mainProduct = Mage::getModel('catalog/product')
                ->setStoreId(Mage::app()->getStore()->getId())->load($groupedParentIds[0]);
            Mage::app()->getResponse()->setRedirect($mainProduct->getProductUrl(), 301);
            Mage::app()->getResponse()->sendResponse();
            exit;
        }
        return $this;
    }
}

Очистите кеш и попробуйте.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с magento.stackexchange
scroll top