Php Magento:更改搜索中的排序顺序,更改类别页面排序

Php Magento:更改搜索中的排序顺序,更改类别页面排序,php,magento,enterprise,Php,Magento,Enterprise,我在Magento中找到了几篇关于如何更改搜索结果排序顺序的文章,这些文章大致相当于这篇: 不幸的是,这也导致分类页面上的排序顺序发生了变化。还有别的办法吗?我想让分类页面按照默认的位置进行排序——但让搜索结果按照属性(零件号)进行排序。我希望这是“如果你把代码放到这个模板中,它会工作得更好”之类的东西之一 我们正在使用Magento Enterprise版本。1.9.0.0.您可以根据需要修改catalogsearch结果集合以进行订购。默认情况下,搜索结果按相关性顺序返回,相关性由搜索词与产

我在Magento中找到了几篇关于如何更改搜索结果排序顺序的文章,这些文章大致相当于这篇:

不幸的是,这也导致分类页面上的排序顺序发生了变化。还有别的办法吗?我想让分类页面按照默认的位置进行排序——但让搜索结果按照属性(零件号)进行排序。我希望这是“如果你把代码放到这个模板中,它会工作得更好”之类的东西之一


我们正在使用Magento Enterprise版本。1.9.0.0.

您可以根据需要修改catalogsearch结果集合以进行订购。默认情况下,搜索结果按相关性顺序返回,相关性由搜索词与产品搜索字段的匹配程度决定

要修改列表顺序,请复制此文件夹

MAGE ROOT/app/code/core/Mage/CatalogSearch
到这里

MAGE ROOT/app/code/local/Mage/CatalogSearch
现在打开这个文件

MAGE ROOT/app/code/local/Mage/CatalogSearch/Block/Result.php
在第108行左右,您将找到此函数

 public function setListOrders()
{
    $category = Mage::getSingleton('catalog/layer')
        ->getCurrentCategory();
    /* @var $category Mage_Catalog_Model_Category */
    $availableOrders = $category->getAvailableSortByOptions();
    unset($availableOrders['position']);
    $availableOrders = array_merge(array(
        'relevance' => $this->__('Relevance')
    ), $availableOrders);

    $this->getListBlock()
        ->setAvailableOrders($availableOrders)
        ->setDefaultDirection('desc')
        ->setSortBy('relevance');

    return $this;
}
您可以根据需要修改setSortBy(X)。你为什么不想按相关性顺序显示搜索结果?

不要这样做。 更好的布局catalogsearch.xml


你想要什么
里面

<block type="catalogsearch/result" name="search.result" template="catalogsearch/result.phtml">

最后

<action method="setListOrders"/>
<action method="setListModes"/>
<action method="setListCollection"/> 

这最好在主题的XML文件中完成,如其他几个答案(包括本答案)所述:
<action method="setListOrders"/>
<action method="setListModes"/>
<action method="setListCollection"/>