Magento:点击类别时显示所有子类别的产品,没有is_anchor

时间:2012-04-20 15:26:38

标签: magento

我们有这样的类别结构:

- 类别1 ----类别1 - 1
-------类别1 - 1 - 1
-------类别1 - 1 - 2
----类别1 - 2
- 第2类
----类别2 - 1
----类别2 - 2

通常,当用户点击根类别时,它显示为空。第1类和第2类也是空的(错误的是,它可能是1或2个产品)。

我想,当点击一个类别时,会显示所有子类别(和子类别的子类别)的产品(+类别本身的产品)。

我们无法使用is_anchor,因为此行为仅适用于三个商店内容中的一个,而is_anchor是全球

我的想法是重写Mage_Catalog_Block_Product_List,因此它在请求类别时会返回子类别的产品,但是通过在所有类别集合请求中添加过滤器等不是更简单的方法吗?

类似问题的答案不完整或使用is_anchor。

1 个答案:

答案 0 :(得分:1)

我现在自己解决了这个问题。

我创建了一个重写Mage_Catalog_Model_Category::getProductCollection()

的模块

步骤如下:

  1. 如果没有子类别,请返回标准parent::getProductCollection()
  2. 如果有子类别,请获取所有子类别ID并将其另存为数组。
  3. 将当前类别的ID添加到数组中。
  4. 获取所有这些类别的集合,并按is_active过滤它们。
  5. 遍历类别集合并加载每个类别。
  6. 获取每个类别的产品集合并进行迭代,将所有产品ID保存到阵列中。下一个类别加载时附加到数组。
  7. 构建产品系列并添加->addAttributeToFilter('entity_id', array('in' => array_unique($result)));
  8. 过滤器
  9. 退回收藏品。它根据需要保存所有子类别的所有产品和当前类别的产品(并且它没有重复)。