Umleiten verknüpfter Produkte zu gruppierten Produkten
-
12-12-2019 - |
Frage
Ich habe meinen Katalog erweitert und bin auf einige Lieferanten gestoßen, die genau die gleichen Produkte führen.Der einzige Unterschied besteht im Preis und in den Lagerbeständen.
Um doppelte Produkte auf meiner Website (und Suchmaschinenstrafen) zu vermeiden, habe ich eine erstellt Grouped Product
mit dem Namen des Produkts und habe die 2 identischen Produkte von den 2 verschiedenen Anbietern hinzugefügt und auf „Not visible individually
"
Das Problem, mit dem ich jetzt konfrontiert bin, besteht darin, dass ich durch Einstellen des Associated Products
Zu "Not visible individually
" bedeutet, dass der Link tot ist.
Ich möchte automatisch eine Weiterleitung zum erstellen Grouped Product
für alle Associated Products
Wie erstellt man Weiterleitungen von Associated Products
zum Grouped Product
?
Lösung
Die Idee ist diese.Überprüfen Sie beim Anzeigen einer Produktseite, ob das Produkt zu einem gruppierten Produkt gehört.Wenn ja, leiten Sie zur Hauptproduktseite weiter.
Es gibt einen Haken.Ein einfaches Produkt kann Teil mehrerer gruppierter Produkte sein.In diesem Fall besteht der einfachste Ansatz darin, zur ersten gefundenen Seite umzuleiten.
Hier ist ein Code, den Sie verwenden können.
Erstellen Sie eine Erweiterung.Nennen wir es StackExchange_Grouped
.
app/etc/modules/StackExchange_Grouped.xml
- die Deklarationsdatei
<?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
– die Modulkonfigurationsdatei, in der Sie einen Beobachter für die Produktansichtsseite deklarieren
<?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
– der Beobachter, der zur gruppierten Produktseite weiterleiten soll.
<?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;
}
}
Leeren Sie den Cache und probieren Sie es aus.