В верхнем меню отображаются только подкатегории определенной категории


Вот мои категории:

Root category
---> Shoes
---- ---> Red    shoes
---- ---> Green  shoes
---- ---> Yellow shoes
---> Shirts
---- ---> Black shirts
---- ---> White shirts
---- ---> Blue  shirts

И мое верхнее меню будет выглядеть так:

-Shoes -Shirts

Но я хочу показать свою обувь только в верхнем меню, вот так:

-Red shoes -Green shoes -Yellow shoes

Как я могу это сделать?

Author: Alireza Fallah, 2014-11-05

1 answers

Категории добавляются в верхнее меню с помощью этого метода Mage_Catalog_Model_Observer::addCatalogToTopmenuItems.
купить по умолчанию метод выглядит следующим образом:

public function addCatalogToTopmenuItems(Varien_Event_Observer $observer)
{
    $this->_addCategoriesToMenu(Mage::helper('catalog/category')->getStoreCategories(), $observer->getMenu());
}

Это означает, что он добавляет в верхнее меню результат Mage::helper('catalog/category')->getStoreCategories() рекурсивно.
Все, что вам нужно сделать, это переписать этот метод и сделать так, чтобы он показывал только нужные вам дочерние категории.

Что-то вроде этого. Допустим, что ваш идентификатор категории shoes равен 5.

public function addCatalogToTopmenuItems(Varien_Event_Observer $observer)
{
    $parent = 5;
    $recursionLevel  = max(0, (int) Mage::app()->getStore()->getConfig('catalog/navigation/max_depth') - 1) //subtract 1 from the set recursion level because we skip a level;
    $categories= Mage::getModel('catalog/category')->getCategories($parent, $recursionLevel, false, false, true);
    $this->_addCategoriesToMenu($categories, $observer->getMenu());
}

Я не проверял это, но я думаю, что идея есть.

 2
Author: Marius, 2014-11-05 12:48:22