Redirecionando os Produtos Associados Agrupadas Produto
-
12-12-2019 - |
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
?
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.