我试图从主菜单中添加每个类别下拉列表中的品牌列表。我相信这将被认为是一个"超级菜单"。
例如,如果我将鼠标悬停在一个主类别上,它不仅会在下拉菜单中显示子类别,还会显示该类别中所有不同的品牌。
品牌有两种设置方式:
-
所有产品都有一个属性'brand'。因此,我们可以尝试获取该类别中的所有产品,并显示与该类别中产品相关的所有品牌列表。这将需要结合分层导航,以便当菜单项被选中时,它将显示来自该类别和该品牌属性的项目的过滤器。
-
我认为这种方法会更简单——每个品牌都已经创建了自己的类别,每个产品既属于主类别,也属于相关的品牌类别。这样做最初是为了展示所有品牌的大列表。有没有功能在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;
}
你可以这样做:
添加类别
然后添加子类别
然后添加子子类
(这将是您所有品牌的名称,这只是类别)
要检索这些类别,您可以访问此链接。