我花了一点时间试图解决这个问题,但无济于事。如果我有一系列页面显示由制造商过滤的产品集合,并且我想要在这些页面中的左栏中进行一些导航,其中包含当前制造商包含产品的类别列表,我没有诉诸一些可怕的慢速代码来填充这个问题? (有几千种产品)。
我可以在循环中添加类似的东西,遍历每个类别,看看是否有针对每个类别返回的制造商的任何结果,但考虑到有几百个类别,这将是相当慢的。 / p>
$category = $currentCategory;
$layer = Mage::getSingleton('catalog/layer');
$layer->setCurrentCategory($category);
$attributes = $layer->getFilterableAttributes();
$manufacturers = array();
foreach ($attributes as $attribute) {
if ($attribute->getAttributeCode() == 'manufacturer') {
$filterBlockName = 'catalog/layer_filter_attribute';
$result = Mage::app()->getLayout()->createBlock($filterBlockName)->setLayer($layer)->setAttributeModel($attribute)->init();
foreach($result->getItems() as $option) {
$manufacturers[$option->getValue()] = $option->getLabel();
}
}
}
如果有人有更好的想法,我将非常感激。
答案 0 :(得分:0)
添加自定义类别属性allmanufacturers(http://inchoo.net/ecommerce/magento/how-to-add-new-custom-category-attribute-in-magento/)。
运行将通过每个类别的所有产品的cron检查其制造商,并在此allmanufacturers客户属性中填充(,)分离的制造商值。
现在在您的代码中,您只需要检查特定制造商的“自定义类别属性 - 所有制造商”值并填充左栏。