1.
给产品添加一个属性,然后按照这个属性进行排序
但是在magento后台添加的是varchar、的类型
排序的时候是按照字符排序,
需要对程序进行更改
Mage_Catalog_Block_Product_List
函数改为:
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
if (Mage::registry('product')) {
// get collection of categories this product is associated with
$categories = Mage::registry('product')->getCategoryCollection()
->setPage(1, 1)
->load();
// if the product is associated with any category
if ($categories->count()) {
// show products from this category
$this->setCategoryId(current($categories->getIterator()));
}
}
$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);
}
}
$dir = $this->getRequest()->getParam('dir');
if(!$dir){
$dir = "DESC";
}
$order = $this->getRequest()->getParam('order');
if(!$order){
$order = "sell_number";
}
if($order == "sell_number"){
$this->_productCollection->setOrder('sell_number', $dir);
$this->_productCollection->getSelect()->reset(Zend_Db_Select::ORDER);
$this->_productCollection->getSelect()->order('CAST(`sell_number` AS SIGNED) '.$dir.' ');
}
return $this->_productCollection;
}