Получение разных идентификаторов товаров для разных категорий
Я пытаюсь добавить ссылку на страницы продукта моего сайта и перенаправить пользователей в зависимости от категории, к которой принадлежит продукт. Например, у меня есть стулья категории, у которых есть Идентификатор категории 39, и у меня есть другие столы категории, для которых идентификатор категории 52.
Теперь моя проблема с описанным выше сценарием заключается в том, что когда я перехожу на страницу продукта через страницы категорий, я получаю вышеупомянутые идентификаторы категорий, и URL-адрес будет
http://example.com/chairs/wood-chair.html
но когда я пытаюсь найти продукт прямо из окна поиска и перейти на страницу продукта, URL становится
http://example.com/wood-chair.html
идентификатор категории становится равным 2, и это происходит с каждой категорией, и он показывает имя категории в качестве категории по умолчанию, когда я захожу на страницу продукта через окно поиска. Как я могу решить это? Пожалуйста, дайте мне знать, если есть какой-либо параметр, который не изменяется на странице продукта, который может позволить мне отображать контент на основе категории, к которой принадлежит продукт.
1 ответ
Вы можете заставить magento установить категорию, добавив наблюдателя на catalog_controller_product_view
:
class My_Module_Model_Observer extends Mage_Core_Model_Observer
{
public function addCategoryToBreadcrumbs(Varien_Event_Observer $observer)
{
if (Mage::registry('current_category')) {
return;
}
$product = $observer->getProduct();
$product->setDoNotUseCategoryId(false);
$categoryIds = $product->getCategoryIds();
if (count($categoryIds)) {
$categories = Mage::getModel('catalog/category')->getCollection()
->addAttributeToFilter('entity_id', $categoryIds)
->addAttributeToFilter('is_active', 1);
$categories->getSelect()->order('level DESC')->limit(1);
Mage::register('current_category', $categories->getFirstItem());
}
}
}
Полный код здесь: https://magento.stackexchange.com/questions/178268/add-category-path-to-breadcrumbs-on-product-view-page/178592