我已经覆盖了产品List.php Class&这是代码
protected function _getProductCollection()
{
if (is_null($this->_productCollection)) {
$result = array_unique($productIds);
$collection = Mage::getResourceModel('catalog/product_collection');
$attributes = Mage::getSingleton('catalog/config')->getProductAttributes();
$collection->addAttributeToSelect($attributes);
$collection->addIdFilter($result);
Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($collection);
$this->_productCollection = $collection;
}
return $this->_productCollection;
}
工作正常,我也按照here添加了分层导航,并按预期显示了分层导航。
唯一的问题是,当我点击分层导航中的任何过滤器时,导航会更新并且过滤器也会添加到网址,但产品列表不会被所选过滤器过滤。 请指导我如何在产品集合中应用过滤器
答案 0 :(得分:4)
我可能在这里错了,但是被覆盖的_getProductCollection()
方法似乎绕过了分层导航。我不知道您的目标是什么要求您这样做,但原始版本获取从分层导航模型Mage_Catalog_Model_Layer
注入的产品集合:
protected function _getProductCollection()
{
if (is_null($this->_productCollection)) {
$layer = $this->getLayer();
/* @var $layer Mage_Catalog_Model_Layer */
if ($this->getShowRootCategory()) {
$this->setCategoryId(Mage::app()->getStore()->getRootCategoryId());
}
// if this is a product view page
...
$origCategory = null;
if ($this->getCategoryId()) {
$category = Mage::getModel('catalog/category')->load($this->getCategoryId());
if ($category->getId()) {
$origCategory = $layer->getCurrentCategory();
$layer->setCurrentCategory($category);
}
}
$this->_productCollection = $layer->getProductCollection();
$this->prepareSortableFieldsByCategory($layer->getCurrentCategory());
if ($origCategory) {
$layer->setCurrentCategory($origCategory);
}
}
}
也许您应该恢复到此方法的原始版本并查看分层导航是否开始工作,如果是,那么您就知道需要将此图层逻辑扩展或合并到您的版本中。