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