Пользовательские категории не применяются без категории URL Slug?

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

Вопрос

Я испытываю странную проблему: скажем, в категории А есть пользовательский дизайн. Когда я открываю продукт через 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);
} 

Итак, поток - что -то вроде этого:

  1. Init The Product с его опциями (включая идентификатор категории)
  2. Видрировать продукт на основе результата init.

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с magento.stackexchange
scroll top