好吧,我的类别只填充了分组产品,我希望这些产品被其关联(和简单)产品的属性过滤。

到目前为止,我已经使用了一个肮脏的解决方法:我只剩下一个简单的产品,可以看到目录,但HTML&CSS隐藏了。
这样,属性出现了,我也可以将它们用于分组产品,但是我注意到,如果当我按价格过滤时,那隐藏的简单产品不会出现,则分层导航消失。

有什么想法或解决方法吗?

谢谢。

有帮助吗?

解决方案

您需要重写如何 Mage_Catalog_Model_Layer 使用当前产品集合的属性集构建属性集合:

protected function _getSetIds()
{
    $key = $this->getStateKey().'_SET_IDS';
    $setIds = $this->getAggregator()->getCacheData($key);

    if ($setIds === null) {
        $setIds = $this->getProductCollection()->getSetIds();
        $this->getAggregator()->saveCacheData($setIds, $key, $this->getStateTags());
    }

    return $setIds;
}

在这种情况下,您需要检查分组产品的产品集合,并返回分组儿童的属性集ID。然后对这些评估 getFilterableAttributes():

public function getFilterableAttributes()
{
    $setIds = $this->_getSetIds();
    if (!$setIds) {
        return array();
    }
    /** @var $collection Mage_Catalog_Model_Resource_Product_Attribute_Collection */
    $collection = Mage::getResourceModel('catalog/product_attribute_collection');
    $collection
        ->setItemObjectClass('catalog/resource_eav_attribute')
        ->setAttributeSetFilter($setIds)
        ->addStoreLabel(Mage::app()->getStore()->getId())
        ->setOrder('position', 'ASC');
    $collection = $this->_prepareAttributeCollection($collection);
    $collection->load();

    return $collection;
}

您可能需要处理缓存密钥。我将通过块缓存进行开发,然后对其进行广泛的测试。

许可以下: CC-BY-SA归因
scroll top