Magento在类别下拉菜单中添加品牌列表

时间:2012-12-24 07:46:43

标签: php magento megamenu

我正在尝试在主菜单的每个类别下拉列表中添加品牌列表。我相信这将被视为一个“大型菜单”。

例如 - 如果我将鼠标悬停在主要类别上,它不仅会在下拉菜单中显示子类别,还会显示此类别中的所有不同品牌。

品牌的设置有两种:

  1. 所有产品都有“品牌”属性。因此,我们可以尝试将所有产品纳入该类别,并显示与此类别中的产品相关的所有品牌的列表。这需要合并分层导航,以便在选择该菜单项时,它将显示该类别和该品牌属性的项目过滤器。

  2. 我认为这种方法会更容易 - 每个品牌都已经创建了自己的类别,每个产品都属于主要类别,以及相关的品牌类别。这是最初完成的,所以我们可以展示所有品牌的大清单。导航循环中的Magento中是否有功能可以获得“其他选择的类别”?例如。如果某个项目属于A类,则下拉列表会显示所有子类别,但也会显示在产品上选择的任何其他相关顶级类别。

  3. 我尝试了各种解决方案,其中包括修改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;
        }
    

1 个答案:

答案 0 :(得分:-1)

你可以这样做:
添加类别
然后添加子类别
然后添加子子类别
(这将是您的所有品牌名称,这仅仅是类别)

要检索这些类别,您可以访问this链接。

希望这对你有所帮助。