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