2
我正在開發一個Magento 1.9.1.0項目,並且搜索結果沒有以正確的順序顯示。我修改了一個按位置順序(幾乎可行)獲取結果的函數,但它似乎首先循環遍歷每個類別,按照位置和名稱的順序列出該類別的產品,然後繼續前進到下一個類別 - 例如,如果我搜索「a」:Magento搜索結果以錯誤的順序排列
防滑浴墊,浴安全條,方形淋浴墊,步行架,(這裏是命令中斷,因爲它進入了一個新類別)鬧鐘,放大電話。
我會喜歡它已經恢復:
鬧鐘,擴增電話,洗浴安全條,廣場淋浴墊,助行架,防滑浴墊
(防滑浴墊將是最後一個,因爲其他所有東西的位置都是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」選項的結果。然後它跳到下一個類別並執行相同的操作。我不希望在每個類別的基礎上 - 我只需要所有產品清空結果。
我想這原本但它不按位置順序整個結果進行排序。 –
我試圖實現的是按照名爲「pay_in_store」的自定義屬性對產品進行排序,但結果似乎以正確順序吐出第一類結果,然後該類別的結果沒有選項「pay_in_store」被選中。然後它跳到下一個類別並執行相同的操作。我不希望在每個類別的基礎上 - 我只需要所有產品清空結果。 –
在app/code/core/Mage/Catalog/Model/Config.php in function getAttributeUsedForSortByArray()中,添加$ options = array('position'=> Mage :: helper('catalog') - > __('Position' ),'name'=> Mage :: helper('catalog') - > __('Name'));在上面的代碼中,在之間添加屬性名稱。 –