4

使用分层导航,如何让客户根据产品出现的其他类别过滤产品?

我正在一家服装店工作,该店的产品按以下类别分类:

  • 最高额
    • T 恤
    • 正装衬衫
  • 下装
    • 牛仔裤
    • 短裤
  • 游泳衣
  • 外套
  • 配件
    • 腰带
    • 领带

我们想添加特殊系列,例如“冬季系列”或“面试服装”。这些特殊类别属于单独的根类别(并且具有设置为特殊值的属性,因此我们可以区分普通类别和这些特殊类别)。其中的所有产品也将被分配到主要类别。

如果用户正在浏览 Winter Collection,他们应该能够根据这些主要类别进行过滤。如果夹克存在于 Winter Collection 和 Outwear 类别中,我们应该将 Outerwear 显示为过滤选项。只应出现相关类别;例如,我们不会在 Winter Collection 中提供泳衣,因此不应出现 Swim Wear 类别。

我们的想法是我们不想为每个系列重复这些主要类别——我们已经知道它是什么类型的服装(基于类别),所以我们的系列应该意识到这一点。

如何才能做到这一点?

4

2 回答 2

1

一个冗长的解决方案是创建一个新属性作为多选,并用所有类别填充它。然后,您必须浏览每一个产品并选择所有适用的“类别”。

这种方法的问题在于,在过滤器中,类别将显示为平面列表,而不是树结构,例如:

示例类别过滤器

我认为情况会比那更糟。我认为过滤器会按字母顺序自动排序?

可能有一个插件可以做你所追求的。

于 2012-10-17T15:38:07.340 回答
1

我能够找到一个最有效的解决方案。我在这里发布它以防其他人有类似的问题。

唯一的缺点是:

  • 类别不显示在树结构中(但 - 正在处理)
  • 单击以删除类别过滤器会像往常一样备份类别树,除了它一直到根,这是不可接受的。我的解决方法是让 X 图标完全删除过滤器,而不是转到父类别。

细节

第一步是向名为“special_type”的类别添加一个新属性。此下拉列表允许管理员选择该类别是作为核心类别(根据我的项目符号列表)还是特殊的“集合”。

下一步是覆盖 Mage_Catalog_Model_Layer_Filter_Category::_getItemsData() 中$categories填充的功能。如果$this->getLayer()->getCurrentCategory()->getSpecialType() ==是默认类型,我调用原始方法(return parent::_getItemsData())。否则...

我传入$this->getLayer()->getProductCollection()一个自定义方法,该方法确定它出现在哪些标准类别中。我在查询中使用以下过滤器:

  • 排除非标准类别
  • 排除当前过滤的类别
  • 仅显示可能的最高级别类别

最后两个基本上允许此功能:如果我目前正在过滤 Tops,则仅显示 Tops 的子类别,不显示其他内容。

自定义方法返回与我的条件匹配的类别集合并分配给$categories. 该方法的其余部分保持不变。

希望这对处于类似情况的人有所帮助。

于 2012-10-18T15:19:17.483 回答