Magento добавить список брендов в раскрывающееся меню категорий

Я пытаюсь добавить список брендов в раскрывающийся список каждой категории из главного меню. Я считаю, что это будет считаться «мега меню».

Например, если я наведу указатель мыши на основную категорию, в раскрывающемся меню будут отображаться не только подкатегории, но и все различные бренды внутри этой категории.

Бренды создаются двумя способами:

  1. Все продукты имеют атрибут «бренд». Поэтому мы могли бы попытаться получить все продукты внутри категории и отобразить список всех брендов, связанных с продуктами в этой категории. Это должно включать многоуровневую навигацию, чтобы при выборе этого пункта меню отображался фильтр элементов из этой категории И этого атрибута бренда.

  2. Я думаю, что этот метод будет проще - у каждого бренда уже есть своя собственная категория, и каждый продукт находится как в основной категории, так и в соответствующей категории бренда. Изначально это было сделано для того, чтобы мы могли показать большой список всех брендов. Есть ли в Magento функция внутри цикла навигации для получения «других выбранных категорий»? Например. Если элемент находится в категории A, в раскрывающемся списке отображаются все подкатегории, а также любые другие связанные категории верхнего уровня, выбранные для продуктов.

Я пробовал различные решения, которые включали изменение Navigation.php (magento 1.6), но я мог заставить его отображать только ВСЕ бренды в магазине, а не только бренды в определенной категории. См. код ниже:

// Navigation.php code
// render children
    $htmlChildren = '';
    $j = 0;
    foreach ($activeChildren as $child) {
    $htmlChildren .= $this->_renderCategoryMenuItemHtml(
    $child,
    ($level + 1),
    ($j == $activeChildrenCount - 1),
    ($j == 0),
    false,
    $outermostItemClass,
    $childrenWrapClass,
    $noEventAttributes
    );
    $j++;
    }
    if (!empty($htmlChildren)) {
    if ($childrenWrapClass) {
    $html[] = '<div class="' . $childrenWrapClass . '">';
    }
    $html[] = '<ul class="level' . $level . '">';
    $html[] = $htmlChildren;

    // My modifications start here

    $product = Mage::getModel('catalog/product');
    $attributes = Mage::getResourceModel('eav/entity_attribute_collection')
    ->setEntityTypeFilter($product->getResource()->getTypeId())
    ->addFieldToFilter('attribute_code', 'brands');
    $attribute = $attributes->getFirstItem()->setEntity($product->getResource());
    $manufacturers = $attribute->getSource()->getAllOptions(false);
    $html[] = '<ol id="nav-drop-brands">';
    foreach ($manufacturers as $manufacturer) {
    $html[] = '<li><a href="http://www.domain.com/catalogsearch/advanced/result?manufacturer[]=';
    $html[] = $manufacturer['value'];
    $html[] = '">';
    $html[] = $manufacturer['label'];
    $html[] = '</a></li>';
    }
    $html[] = '</ol>';

    // end of my modifications 

    $html[] = '</ul>';
    if ($childrenWrapClass) {
    $html[] = '</div>';
    }
    }

    $html[] = '</li>';

    $html = implode("\n", $html);
    return $html;
    }

person ronnz    schedule 24.12.2012    source источник


Ответы (1)


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

Чтобы получить эти категории, вы можете посетить эта ссылка.

Надеюсь, это поможет вам.

person Nikhil_K_R    schedule 24.12.2012
comment
Привет Нихил - большое спасибо за ваш ответ. В настоящее время бренды уже настроены двумя способами (я обновил свой вопрос выше, чтобы дать вам больше информации). Я не думаю, что мы сможем настроить их все и применить как под-подкатегории, так как в магазине уже более 1000 товаров. - person ronnz; 24.12.2012
comment
это плохое решение! вы должны использовать атрибут производителя и использовать его для создания меню. см. это: magentocommerce.com/wiki/5_-_modules_and_development/navigation/ - person karantan; 03.07.2014
comment
@karantan после добавления меню, что будет следующим шагом? - person Nikhil_K_R; 06.07.2014