@@ -201,7 +201,6 @@ private function categoryProductByCustomSortOrder(int $categoryId): array
201
201
$ searchCriteria = $ this ->searchResult ->getSearchCriteria ();
202
202
$ sortOrders = $ searchCriteria ->getSortOrders () ?? [];
203
203
$ sortOrders = array_merge (['is_salable ' => \Magento \Framework \DB \Select::SQL_DESC ], $ sortOrders );
204
- $ defaultColumnsFilter = ['is_salable ' , 'position ' , 'name ' , 'price ' , 'entity_id ' ];
205
204
206
205
$ connection = $ this ->collection ->getConnection ();
207
206
$ query = clone $ connection ->select ()
@@ -220,7 +219,7 @@ private function categoryProductByCustomSortOrder(int $categoryId): array
220
219
'cat_index.product_id = e.entity_id '
221
220
. ' AND cat_index.category_id = ' . $ categoryId
222
221
. ' AND cat_index.store_id = ' . $ storeId ,
223
- ['cat_index.position AS cat_index_position ' ]
222
+ ['cat_index.position ' ]
224
223
);
225
224
foreach ($ sortOrders as $ field => $ dir ) {
226
225
if ($ field === 'name ' ) {
@@ -244,7 +243,12 @@ private function categoryProductByCustomSortOrder(int $categoryId): array
244
243
['price_index.max_price AS price ' ]
245
244
);
246
245
}
247
- if (in_array ($ field , $ defaultColumnsFilter , true )) {
246
+ $ columnFilters = [];
247
+ $ columnsParts = $ query ->getPart ('columns ' );
248
+ foreach ($ columnsParts as $ columns ) {
249
+ $ columnFilters [] = $ columns [2 ] ?? $ columns [1 ];
250
+ }
251
+ if (in_array ($ field , $ columnFilters , true )) {
248
252
$ query ->order (new \Zend_Db_Expr ("{$ field } {$ dir }" ));
249
253
}
250
254
}
0 commit comments