【问题标题】:Layered navigation - filter by other categories分层导航 - 按其他类别过滤
【发布时间】:2012-10-17 15:29:12
【问题描述】:

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

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

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

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

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

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

如何做到这一点?

【问题讨论】:

    标签: php magento e-commerce magento-1.7


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 感谢您的回答!不幸的是,这种解决方法是我试图避免的,但我想我可能已经想通了:)
    【解决方案2】:

    我能够想出一个体面的解决方案,它主要是可行的。我把它贴在这里以防其他人有类似的问题。

    唯一的缺点是:

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

    细节

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

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

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2014-07-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多