Pergunta

Eu tenho sido a expansão do meu catálogo e ter executado alguns fornecedores que estão levando o exato mesmo produtos.A única diferença é o preço e os níveis de estoque.

Para evitar a duplicação de produtos no meu site (e penalidades de mecanismo de pesquisa), eu criei um Grouped Product com o nome do produto e tiver adicionado os 2 produtos idênticos de 2 diferentes fornecedores e ter defini-los para "Not visible individually"

O problema que enfrentam agora é que, ao definir o Associated Products a "Not visible individually"é que o link se torna morta.

O que eu gostaria de fazer é criar automaticamente um redirecionamento para o Grouped Product para todos Associated Products

Como criar redirecionamentos de Associated Products para o Grouped Product ?

Foi útil?

Solução

A ideia é esta.Quando visualizar a página de um produto, verifique se o produto pertence a uma agrupados produto.Se assim for, redirecione para o principal produto página.
Há um senão.Um produto simples pode ser parte de mais de uma agrupados produto.Neste caso, a abordagem mais simples é a de redirecionar para o primeiro que for encontrado.

Aqui está um código que você pode usar.
Criar uma extensão.Vamos chamá-lo de StackExchange_Grouped.

app/etc/modules/StackExchange_Grouped.xml - o arquivo de declaração

<?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 - o módulo de arquivo de configuração onde você declarar um observador para o produto vista de página

<?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 - o observador que deve redirecionar para o agrupados página do produto.

<?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;
    }
}

Limpar o cache e dar-lhe um ir.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a magento.stackexchange
scroll top