magento 제품 페이지 판매량 정렬 - 문자 속성 숫자별 정렬 - CAST (`sell number` AS SIGNED)

2479 단어
1.
제품에 속성을 추가한 후 이 속성에 따라 정렬합니다
그런데 마젠토 백엔드에 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;
    }

좋은 웹페이지 즐겨찾기