使用分层导航,如何让客户根据产品所在的其他类别过滤产品?
我正在一家服装店工作,产品分类如下:
我们想添加特别收藏品,例如“冬季系列”或“采访服装”。这些特殊类别属于单独的根类别(并且属性设置为特殊值,因此我们可以区分正常类别和这些特殊类别)。其中的所有产品也将分配到主要类别。
如果用户正在浏览冬季系列,他们应该能够根据这些主要类别进行过滤。如果冬季系列和外套类别中有夹克,我们应该将外套作为过滤选项。只应出现相关类别;例如,我们不会在冬季系列中穿泳衣,因此不应出现泳装类别。
我们的想法是,我们不想为每个集合复制那些主要类别 - 我们已经知道它是什么类型的服装(基于类别),所以我们的集合应该意识到这一点。
如何做到这一点?
答案 0 :(得分:1)
一个冗长的解决方案是创建一个新属性作为多选,并用所有类别填充它。然后,您必须浏览每个产品并选择适用的所有“类别”。
这种方法的问题在于,在过滤器中,类别将显示为平面列表,而不是树结构,例如:
我认为会比这更糟糕。我认为过滤器按字母顺序自动排序?
可能有一个插件可以完成您的工作。
答案 1 :(得分:1)
我能够找到一个可行的解决方案。我在这里发帖,以防其他人有类似的问题。
唯一的缺点是:
第一步是向名为“special_type”的类别添加新属性。此下拉列表允许管理员选择该类别是作为核心类别(根据我的项目符号列表)还是作为特殊“集合”。
下一步是覆盖Mage_Catalog_Model_Layer_Filter_Category :: _ getItemsData()中的功能,其中填充了$categories
。如果$this->getLayer()->getCurrentCategory()->getSpecialType() ==
为默认类型,则调用原始方法(return parent::_getItemsData()
)。否则...
我将$this->getLayer()->getProductCollection()
传递给自定义方法,该方法确定出现哪些标准类别。我在查询中使用以下过滤器:
最后两个基本上允许这个功能:如果我目前正在过滤Tops,只显示Tops的子类别而不是其他内容。
自定义方法返回符合我的条件的类别集合,并分配给$categories
。该方法的其余部分保持不变。
希望这有助于处于类似情况的人。