商品検索の並べ替えリストに、商品を最高価格から最低価格の順に並べて、最後にゼロ価格の商品を表示する方法はありますか。
通常の並べ替えは正常に機能しますが(低から高、または高から低)、最後にゼロ価格の商品を含める機能が本当に必要です。リストされる方法の例は次のとおりです。
製品1:£3
製品2:£18
製品3:£0
製品4:£0
ここやGoogleで検索する方法をまだ見つけておらず、Magentoにあまり詳しくないので、これをどこで変更するかわかりません。誰かが答えを持っているか、自分で編集するためのクエリまたは正しいファイルを教えてくれる場合は、自分で行ってもかまいません。
ここからのヘルプと他の質問を使用して_getProductCollection()
、ファイル内のメソッドを編集し/app/code/core/Mage/Catalog/Block/Product/List.php
(ローカルにコピーしたことを心配しないでください)、次の数行を追加しました。
$orderFilterType = $this->getRequest()->getParam('order');
$dirFilterType = $this->getRequest()->getParam('dir');
if( isset( $orderFilterType ) && $orderFilterType == 'price' && isset( $dirFilterType ) && $dirFilterType == 'asc' ) {
$this->_productCollection = $layer->getProductCollection()->addAttributeToSort( 'price', 'DESC' );
} else {
$this->_productCollection = $layer->getProductCollection();
}
これは、このコード内で私が行うことは、誰かが昇順オプションでorderby価格ドロップダウンを選択した場合にのみ実行されることを意味します。
$this->_productCollection = $layer->getProductCollection();
問題は、このリターンを希望どおりに返すための値に影響を与えるために何をすべきかわからないことです。