Pregunta

He ido ampliando mi catálogo y me he topado con algunos proveedores que ofrecen exactamente los mismos productos.La única diferencia es el precio y los niveles de existencias.

Para evitar productos duplicados en mi sitio web (y penalizaciones de los motores de búsqueda), he creado una Grouped Product con el nombre del producto y han agregado los 2 productos idénticos de los 2 proveedores diferentes y los han configurado en "Not visible individually"

El problema al que me enfrento ahora es que al configurar el Associated Products a "Not visible individually" es que el enlace queda inactivo.

Lo que me gustaría hacer es crear automáticamente una redirección al Grouped Product para todos Associated Products

¿Cómo se crean redirecciones de Associated Products hacia Grouped Product ?

¿Fue útil?

Solución

La idea es esta.Al ver la página de un producto, verifique si el producto pertenece a un producto agrupado.Si es así, redirija a la página principal del producto.
Hay una trampa.Un producto simple puede formar parte de más de un producto agrupado.En este caso, el método más sencillo es redirigir al primero que encuentre.

Aquí hay un código que puedes usar.
Crea una extensión.llamémoslo StackExchange_Grouped.

app/etc/modules/StackExchange_Grouped.xml - el archivo de declaración

<?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 - el archivo de configuración del módulo donde declara un observador para la página de vista del producto

<?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 - el observador que debería redirigir a la página del producto agrupado.

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

Borra el caché y pruébalo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a magento.stackexchange
scroll top