إعادة توجيه المنتجات المرتبطة إلى المنتج المجمع
-
12-12-2019 - |
سؤال
لقد قمت بتوسيع الكتالوج الخاص بي وواجهت عددًا قليلاً من الموردين الذين يقدمون نفس المنتجات بالضبط.والفرق الوحيد هو مستويات الأسعار والمخزون.
لتجنب المنتجات المكررة على موقع الويب الخاص بي (وعقوبات محرك البحث)، قمت بإنشاء ملف Grouped Product
باسم المنتج وقمت بإضافة المنتجين المتطابقين من الموردين المختلفين وقمت بتعيينهما على "Not visible individually
"
المشكلة التي أواجهها الآن هي أنه من خلال تعيين Associated Products
ل "Not visible individually
"هو أن الرابط يصبح ميتا.
ما أود فعله هو إنشاء عملية إعادة توجيه تلقائيًا إلى ملف Grouped Product
للجميع Associated Products
كيف يمكنك إنشاء عمليات إعادة التوجيه لـ Associated Products
إلى Grouped Product
?
المحلول
الفكرة هي هذه.عند عرض صفحة المنتج، تحقق لمعرفة ما إذا كان المنتج ينتمي إلى منتج مجمع.إذا كان الأمر كذلك، قم بإعادة التوجيه إلى صفحة المنتج الرئيسية.
هناك الصيد.يمكن أن يكون المنتج البسيط جزءًا من أكثر من منتج مجمع.في هذه الحالة، فإن أبسط طريقة هي إعادة التوجيه إلى أول واحد تم العثور عليه.
إليك بعض التعليمات البرمجية التي يمكنك استخدامها.
إنشاء امتداد.دعونا نسميها StackExchange_Grouped
.
app/etc/modules/StackExchange_Grouped.xml
- ملف الإقرار
<?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
- ملف تكوين الوحدة الذي تعلن فيه مراقبًا لصفحة عرض المنتج
<?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
- المراقب الذي يجب عليه إعادة التوجيه إلى صفحة المنتج المجمعة.
<?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;
}
}
امسح ذاكرة التخزين المؤقت وجربها.