我正在加载我的集合,在自定义list.phtml里面加载扩展
$_productCollection=$this->getLoadedProductCollection();
$_helper = $this->helper('catalog/output');
$listHelper = Mage::helper('customodule);
?>
<?php if(!$_productCollection->count()): ?>
我怎么能用这种方法调用集合中的排序?
我知道如何使用其他方法,但我需要使用第1个 其他方法:
<?php $todayDate = Mage::app()->getLocale()->date()->toString(Varien_Date::DATETIME_INTERNAL_FORMAT);
$_productCollection = Mage::getModel('catalog/product')
->getCollection()
->addCategoryFilter(Mage::getModel('catalog/category')->load(4))
->addAttributeToFilter('news_from_date', array('date' => true, 'to' => $todayDate))
->addAttributeToFilter('news_to_date', array('or'=> array(
0 => array('date' => true, 'from' => $todayDate),
1 => array('is' => new Zend_Db_Expr('null')))
), 'left')
->addAttributeToSort('news_from_date', 'desc')
->addAttributeToSelect(array('name','url','small_image','price'))
->setPage(1, 10)
->addAttributeToSort('created_at', 'desc')
?>
<?php if(!$_productCollection->count()): ?>
答案 0 :(得分:0)
假设Mage_Catalog_Product_List::getLoadedProductCollection()
用于第一个集合,而不是这两个集合之间的差异,第一个集合通常会已经加载了它的产品,所以尝试SQL过滤/排序后会很漂亮没有意义的。
在标准Magento中,此方法的调用堆栈大致如下所示:
Mage_Catalog_Product_List::getLoadedProductCollection()
Mage_Catalog_Product_List::_getProductCollection()
Mage_Catalog_Model_Layer::getProductCollection()
这意味着,如果要以您希望的方式更改SQL过滤/排序,则需要覆盖Mage_Catalog_Model_Layer::getProductCollection()
。
或者您也可以先将您的集合放入某个数组中,然后使用PHP对其进行排序。