Пользовательские дизайны категорий не будут применяться без слага URL-адреса категории?
У меня возникла странная проблема: допустим, категория А имеет индивидуальный дизайн. Когда я открываю продукт через domain.com/category-a/product.html
, пользовательский дизайн применяется правильно.
Но когда я открываю продукт через канонический URL-адрес сайта сайта Magento/Googledomain.com/product.html
, пользовательский дизайн не будет применяться.
Как я могу обойти это поведение? Я полагаю, это потому, что Magento не знает, какой пользовательский дизайн категории следует применять в качестве продукта, который может иметь более одной категории?
Макет структура такова:
- индивидуальный дизайн
- ->по умолчанию
- ->категория_состояние
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);
}
Таким образом, поток выглядит примерно так:
- введите продукт с его параметрами (включая идентификатор категории)
- Визуализация продукта на основе результата инициализации.
Вы можете попробовать добавить некоторую логику на этапе инициализации, чтобы указать категорию.
В конце, если метод initProduct
, это событие отправленный.
Mage::dispatchEvent('catalog_controller_product_init', array('product' => $product));
Вы можете создать наблюдателя на этом и установить категорию продукта (что-то похожее на приведенный выше код), и часть рендеринга должна учитывать вашу категорию.