カスタムカテゴリのデザインは、カテゴリURLスラッグなしでは適用されませんか?

magento.stackexchange https://magento.stackexchange.com/questions/7124

質問

私は奇妙な問題を経験しています。カテゴリAにカスタムデザインがあるとしましょう。私が介して製品を開くとき domain.com/category-a/product.html カスタムデザインは正しく適用されます。

しかし、MagentoのCanonical/GoogleサイトマップURLを介して製品を開くと domain.com/product.html カスタムデザインは適用されません。

どうすればその動作をバイパスできますか?それは、Magentoが製品として適用するカテゴリのカスタムデザインが複数のカテゴリを持つことができるかわからないからだと思いますか?

レイアウト構造は次のとおりです。

  • カスタムデザイン
  • - >デフォルト
  • - > category_custom
役に立ちましたか?

解決

製品ページはからレンダリングされます Mage_Catalog_Helper_Product_View::prepareAndRender(). 。この方法は、呼び出すことにより現在のカテゴリを考慮します Mage_Catalog_Helper_Product_View::initProduct() このコードで:

$categoryId = $params->getCategoryId(); 
//...
if ($categoryId) {
    $category = Mage::getModel('catalog/category')->load($categoryId);
    $product->setCategory($category);
    Mage::register('current_category', $category);
} 

したがって、フローは次のようなものです:

  1. オプションで製品を開始する(カテゴリIDを含む)
  2. initの結果に基づいて製品をレンダリングします。

INITフェーズにロジックを追加して、カテゴリを指定することを試みることができます。
最後に initProduct 方法、このイベントが発送されます。

Mage::dispatchEvent('catalog_controller_product_init', array('product' => $product)); 

これに関するオブザーバーを作成して、製品カテゴリ(上記のコードに似たもの)を設定することができ、レンダリング部分はカテゴリを考慮に入れる必要があります。

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