Reindirizzamento dei prodotti associati al prodotto raggruppato
-
12-12-2019 - |
Domanda
Ho espanso il mio catalogo e ho incontrato alcuni fornitori che svolgono gli stessi prodotti identici.L'unica differenza è il prezzo e i livelli delle scorte.
Per evitare prodotti duplicati sul mio sito Web (e sanzioni dei motori di ricerca), ho creato un Grouped Product
con il nome del prodotto e ho aggiunto i 2 prodotti identici dei 2 fornitori diversi e li hanno impostati su "Not visible individually
" .
Il problema che ora faccio è che impostando il Associated Products
a "Not visible individually
" è che il collegamento diventa morto.
Quello che vorrei fare è creare automaticamente un reindirizzamento al Grouped Product
per tutti i Associated Products
Come si creano reindirizzamenti di Associated Products
al Grouped Product
?
Soluzione
L'idea è questa.Quando si visualizza una pagina del prodotto, controllare se il prodotto appartiene a un prodotto raggruppato.Se è così, reindirizzare la pagina principale del prodotto.
C'è una cattura.Un prodotto semplice può far parte di più di un prodotto raggruppato.In questo caso l'approccio più semplice è quello di reindirizzare il primo trovato.
Ecco alcuni codici che puoi usare.
Creare un'estensione.Chiamiamolo StackExchange_Grouped
.
app/etc/modules/StackExchange_Grouped.xml
- il file di dichiarazione
<?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
- Il file di configurazione del modulo in cui dichiari un osservatore per la pagina di visualizzazione del prodotto
<?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
- L'osservatore che dovrebbe reindirizzare la pagina del prodotto raggruppata.
<?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;
}
}
.
Cancella la cache e dargli un go.