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

时间:2015-03-11 17:47:56

标签: php magento enterprise

我发现了一些关于如何更改Magento搜索结果排序顺序的文章,大致与此相同:http://www.blog.magepsycho.com/how-to-change-default-sort-order-dir-in-magento-search-results/

不幸的是,这导致排序顺序也在类别页面上发生变化。还有另一种方法吗?我想保留按默认值排序的类别页面,位置 - 但搜索结果按属性,部件号排序。我希望这是其中之一"如果你把它放到这个模板中,代码会更好用#34;类似的东西。

我们正在使用Magento Enterprise ver。 1.9.0.0。

2 个答案:

答案 0 :(得分:1)

您可以根据需要修改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)修改为您想要的任何内容。为什么你不希望ot显示搜索结果的相关性?

答案 1 :(得分:1)

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

添加

<reference name="search_result_list">
    <action method="setSortBy"><name>whateveryouwant</name></action>
</reference>

里面

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

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