Question

Je rencontre un problème étrange: Soit catégorie A par exemple l'a un design personnalisé. Quand j'ouvre le produit via domain.com/category-a/product.html la conception personnalisée applique correctement.

Mais quand j'ouvre le produit à travers le canonique / Google Magento plan du site url domain.com/product.html la conception personnalisée ne sera pas applicable.

Comment puis-je contourner ce comportement? Je suppose que ce que Magento ne sait pas quelle catégorie la conception de coutume d'appliquer un produit peut avoir plus d'une catégorie?

Structure mise en page est la suivante:

  • conception personnalisée
  • -> default
  • -> category_custom
Était-ce utile?

La solution

La page produit est rendu à partir Mage_Catalog_Helper_Product_View::prepareAndRender(). Cette méthode tient compte de la catégorie actuelle en appelant Mage_Catalog_Helper_Product_View::initProduct() dans ce morceau de code:

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

Ainsi, le flux est quelque chose comme ceci:

  1. initialiser le produit avec ses options (y compris id catégorie)
  2. Render le produit en fonction du résultat init.

Vous pouvez essayer d'ajouter une certaine logique dans la phase d'initialisation pour spécifier la catégorie.
A la fin si la méthode de initProduct, cet événement est distribué.

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

Vous pouvez créer un observateur sur ce sujet et définir la catégorie de produits (quelque chose de similaire au code ci-dessus) et la partie de rendu devrait tenir compte de votre catégorie.

Licencié sous: CC-BY-SA avec attribution
Non affilié à magento.stackexchange
scroll top