Пользовательские дизайны категорий не будут применяться без слага URL-адреса категории?


У меня возникла странная проблема: допустим, категория А имеет индивидуальный дизайн. Когда я открываю продукт через domain.com/category-a/product.html, пользовательский дизайн применяется правильно.

Но когда я открываю продукт через канонический URL-адрес сайта сайта Magento/Googledomain.com/product.html, пользовательский дизайн не будет применяться.

Как я могу обойти это поведение? Я полагаю, это потому, что Magento не знает, какой пользовательский дизайн категории следует применять в качестве продукта, который может иметь более одной категории?

Макет структура такова:

  • индивидуальный дизайн
  • ->по умолчанию
  • ->категория_состояние
Author: oschloebe, 2013-08-25

1 answers

Страница продукта отображается из 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. введите продукт с его параметрами (включая идентификатор категории)
  2. Визуализация продукта на основе результата инициализации.

Вы можете попробовать добавить некоторую логику на этапе инициализации, чтобы указать категорию.
В конце, если метод initProduct, это событие отправленный.

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

Вы можете создать наблюдателя на этом и установить категорию продукта (что-то похожее на приведенный выше код), и часть рендеринга должна учитывать вашу категорию.

 3
Author: Marius, 2013-08-26 07:18:24