magento,如何对catalogsearch集合进行排序

magento,如何对catalogsearch集合进行排序,search,magento-1.9,Search,Magento 1.9,如何对catalogsearch集合进行排序 我找到了一个函数\u getProductCollection,但我不知道下一步该怎么做,也不知道是否有必要在这里进行更改 我想按SKU对搜索进行排序,例如,用户在站点上查找SKU为6727的产品,但SKU不在第一位,但在第五位,我希望他在列表中排名第一。您使用的参考不起作用,因为没有代码按类别对产品进行排序。您需要覆盖Mage\u CatalogSearch\u Block\u结果::\u getProductCollection(),然后在其中添

如何对catalogsearch集合进行排序

我找到了一个函数
\u getProductCollection
,但我不知道下一步该怎么做,也不知道是否有必要在这里进行更改


我想按SKU对搜索进行排序,例如,用户在站点上查找SKU为6727的产品,但SKU不在第一位,但在第五位,我希望他在列表中排名第一。您使用的参考不起作用,因为没有代码按类别对产品进行排序。您需要覆盖Mage\u CatalogSearch\u Block\u结果::\u getProductCollection(),然后在其中添加排序函数,以按类别id的顺序显示结果

试试下面的。使用同一引用并将此附加函数添加到同一文件中

protected function _getProductCollection()
{
    if (is_null($this->_productCollection)) {
        $this->_productCollection = $this->getListBlock()->getLoadedProductCollection();
    }
    $listOrder = $this->getRequest()->getParam('dir') ? $this->getRequest()->getParam('dir') : 'desc';
    if(!$this->getRequest()->getParam('order') || $this->getRequest()->getParam('order') == 'category'){
        $this->_productCollection->getSelect()->joinLeft(array('category' => Mage::getSingleton('core/resource')->getTableName('catalog_product_category')),'e.entity_id = category.product_id', array('category_id'))->group('e.entity_id')->order('category.category_id '.$listOrder);
    }
    return $this->_productCollection;
}

但是如何按SKU排序?关于职位,如我在问题中所问,您是否将SKU附加到第1行。我没有表目录\产品\类别,它会向我返回一个错误,但您的答案是正确的,我会将其标记为正确的目录\产品\类别是否存在这样的表?或者我需要换张桌子?