magento 产品页面销量排序 - 字符属性 按照数字方式排列 - CAST(`sell_number` AS SIGNED)


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;
    }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值