Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Magento搜索结果顺序错误_Php_Magento_Magento 1.9 - Fatal编程技术网

Php Magento搜索结果顺序错误

Php Magento搜索结果顺序错误,php,magento,magento-1.9,Php,Magento,Magento 1.9,我正在处理Magento 1.9.1.0项目,搜索结果的显示顺序不正确。我修改了一个函数,以按位置的顺序获取结果(几乎可以正常工作),但它似乎首先在每个类别中循环,按位置和名称的顺序列出该类别中的产品,然后转到下一个类别-例如,如果我搜索“a”: 防滑浴缸垫、浴缸安全带、方形淋浴垫、步行架(这里的订单中断,因为它进入了一个新的类别)闹钟、放大电话 我希望它能回来: 闹钟、扩音器、浴缸安全带、方形淋浴垫、步行架、防滑浴缸垫 (防滑浴垫将是最后一个,因为其他所有东西的位置为0,而本产品的位置为10)

我正在处理Magento 1.9.1.0项目,搜索结果的显示顺序不正确。我修改了一个函数,以按位置的顺序获取结果(几乎可以正常工作),但它似乎首先在每个类别中循环,按位置和名称的顺序列出该类别中的产品,然后转到下一个类别-例如,如果我搜索“a”:

防滑浴缸垫、浴缸安全带、方形淋浴垫、步行架(这里的订单中断,因为它进入了一个新的类别)闹钟、放大电话

我希望它能回来:

闹钟、扩音器、浴缸安全带、方形淋浴垫、步行架、防滑浴缸垫

(防滑浴垫将是最后一个,因为其他所有东西的位置为0,而本产品的位置为10)

是否有一种方法可以修改此搜索,只显示所有产品而不按类别顺序订购?到目前为止,我所编写的功能是:

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'),
        'name' => $this->__('Name'),
        'position' => $this->__('Position')
    ), $availableOrders);

    $this->getListBlock()
        ->setAvailableOrders($availableOrders)
        ->setDefaultDirection('asc')
        ->setSortBy('position');
    return $this;

}
而且

protected function _getProductCollection()
{
    if (is_null($this->_productCollection)) {
        $this->_productCollection = $this->getListBlock()->getLoadedProductCollection();
    }

return $this->_productCollection->addAttributeToSort('position')->addAttributeToSort('name');

}

编辑:我试图实现的是通过一个名为“pay_in_store”的自定义属性对产品进行排序,但结果似乎以正确的顺序吐出第一类结果,然后是没有选中“pay_in_store”选项的类别的结果。然后它跳转到下一个类别并执行相同的操作。我不希望以每个类别为基础,我只需要将所有产品清空到结果中。

将下面的代码添加到local.xml或any layout.xml文件中

<catalogsearch_result_index>
 <reference name="search_result_list">
    <action method="setDefaultDirection"><param>asc</param></action>
    <action method="setSortBy"><param>attribute_you_want_to_use</param></action>
 </reference>
</catalogsearch_result_index>

asc
您希望使用的属性

我最初尝试过这个方法,但它没有按照位置的顺序对整个结果进行排序。我试图实现的是按照一个名为“pay_in_store”的自定义属性对产品进行排序,但结果似乎以正确的顺序吐出第一类结果,然后是该类别中没有“pay_in_store”选项的结果选中的。然后它跳转到下一个类别并执行相同的操作。我不希望每个类别都这样-我只需要将所有产品清空到结果中。在函数getAttributeUsedForSortByArray()的app/code/core/Mage/Catalog/Model/Config.php中,添加$options=array('position'=>Mage::helper('Catalog')->Mage::helper('position'),'name'=>Mage::helper('Catalog')->;在上面的代码中添加属性名。