質問

私はカタログを拡張しており、まったく同じ製品を扱っているサプライヤーをいくつか見つけました。唯一の違いは価格と在庫レベルです。

私の Web サイト上の重複製品 (および検索エンジンのペナルティ) を避けるために、 Grouped Product 製品名を付けて、2 つの異なるサプライヤーからの 2 つの同一製品を追加し、「」に設定しました。Not visible individually"

私が今直面している問題は、 Associated Products に "Not visible individually」ということは、リンクが切れてしまうことです。

私がやりたいのは、へのリダイレクトを自動的に作成することです。 Grouped Product すべてのために Associated Products

リダイレクトを作成するにはどうすればよいですか Associated ProductsGrouped 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;
    }
}

キャッシュをクリアして試してみてください。

ライセンス: CC-BY-SA帰属
所属していません magento.stackexchange
scroll top