这适用于目录类别页面。默认的getLoadedProductCollection方法在所有情况下都无法正常工作,所以我需要这样做。
我在添加下面的价格排序时遇到了麻烦。通过删除addCategoryFilter,产品按价格正确排序。通过删除价格排序方法并保留addCategoryFilter,该类别显示未排序。
我尝试了以下操作来使用join来过滤类别,但这没有做任何事情:
http://magento.stackexchange.com/questions/7094/filter-product-collection-by-multiple - 类别
$layer = Mage::getSingleton('catalog/layer');
$category = $layer->getCurrentCategory();
$currentCatId= $category->getId();
$category_model = Mage::getModel('catalog/category')->load($currentCatId);
$_productCollection = Mage::getModel('catalog/product')
->getCollection()
->addAttributeToSelect("*")
->addAttributeToSort('price', Varien_Data_Collection::SORT_ORDER_DESC)
->addStoreFilter(Mage::app()->getStore()->getId())
->addAttributeToFilter('status',1)
->setVisibility(
Mage::getSingleton('catalog/product_visibility')->getVisibleInCatalogIds() )
->addCategoryFilter($category_model)
->load();
任何帮助将不胜感激。我不太明白为什么这不能正常工作。
P.S。我还尝试使用setOrder方法,而不是addAttributeToSort。
答案 0 :(得分:0)
而不是addAttributeToSort()
,为什么不尝试setOrder()
?
这样的事情:
$layer = Mage::getSingleton('catalog/layer');
$category = $layer->getCurrentCategory();
$currentCatId= $category->getId();
$category_model = Mage::getModel('catalog/category')->load($currentCatId);
$_productCollection = Mage::getModel('catalog/product')
->getCollection()
->addAttributeToSelect("*")
->addStoreFilter(Mage::app()->getStore()->getId())
->setOrder('price', Varien_Data_Collection::SORT_ORDER_DESC)
->addAttributeToFilter('status',1)
->setVisibility(
Mage::getSingleton('catalog/product_visibility')->getVisibleInCatalogIds() )
->addCategoryFilter($category_model)
->load();
希望有所帮助