【发布时间】:2013-01-04 05:31:02
【问题描述】:
我有一个 Magento 网站,其中包含大量目录(10,000 种产品)和相当深的类别树。
该产品的所有类别均源自顶级“所有产品”类别。
所有产品都有一个“品牌”下拉属性。
我想要做的是让访问者从类别树的顶部开始,然后在“所有产品”树中导航无论是否选择品牌。问题是我们需要在每个级别显示下一级子类别,如果品牌不适用,我不想显示空类别。
例如,如果树看起来像这样,并且其中一个在“螺丝刀页面”上,我们希望类型和长度类别都可见。
- 所有产品
- 螺丝刀
- 菲利普斯
- 2"
- 3"
- 5"
- 平头
- 1"
- 3"
- 5"
- 菲利普斯
- 螺丝刀
通过创建类别集合,我能够做到这一点而无需担心品牌过滤器:
$_category = $this->getCurrentCategory();
$current_level = $_category->getLevel();
$collection = $_category->getCollection();
$collection->addAttributeToSelect('url_key')
->addAttributeToSelect('name')
->addAttributeToSelect('parent_id')
->addAttributeToFilter('is_active', 1)
->addAttributeToFilter('level',array('in'=>array($current_level+1,$current_level+2)))
->setOrder('position','ASC')
->load();
根据我的研究,不可能直接按产品属性过滤类别集合。
假设这是真的: 最好的方法是什么?我已经想到并初步尝试了几个想法:
- 创建一个按品牌过滤的产品集合并循环遍历它以获取所有相关类别并构建树(看起来效率极低)
- 尝试利用分层导航来输出类别(如果我们只查看一个级别,这将起作用 - 我无法获得过滤后的“第二个”级别。)
- 放弃过滤想法,在新的“按品牌浏览”类别下复制类别树(我想远离这种情况,以便更新产品不需要更新两个重复的树。)
提前感谢您的帮助。如果您需要对问题进行任何澄清,请告诉我。
【问题讨论】:
标签: magento